java 파일 intellij 아이디어로 디컴파일하는 방법
IDEA에는 뛰어난 디컴파일러 기능이 내장되어 있습니다.아주 잘 작동한다.소스 코드를 복사할 수 있지만 모든 디컴파일된 Java 클래스를 Java 파일로 추출하는 옵션을 찾을 수 없습니다.
이 프로젝트는 자바 클래스나 패키지가 많기 때문에 수동으로 복사하는 데 시간이 걸립니다.
자바 소스 파일로 추출하는 방법을 아는 사람 있나요? th th
및 은 더 이상 하지 않은 것 .2017년 8월 IntelliJ .2는 없습니다.에서 승인된 답변은 더 이상 완전히 정확하지 않은 것 같습니다.fernflower.jar
사용할 수 있습니다.
은 항아리입니다.java-decompiler.jar
…하다대신 (Mac 설치에서) 다음 명령을 사용할 수 있습니다.
java -cp "/Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler
(잘못된 Usage 명령어가 표시되지만 동작합니다).
IntelliJ JD 플러그인의 지시에 따릅니다.또는 아래 설명에서 발췌한 내용을 참조하십시오.
java -jar fernflower.jar [<source>]+ <destination>
+
합니다.
<source>
: 파일 또는 디렉토리에서 파일을 디컴파일합니다.디렉토리는 재귀적으로 스캔 됩니다.집항아리다
<destination>
디렉토리: " " " "
예:
java -jar fernflower.jar -hdc=0 -dgs=1 -rsy=1 -lit=1 c:\Temp\binary\ -e=c:\Java\rt.jar c:\Temp\source\
소스의 「.jar」파일을 전달하면, 행선지에 다른 「.jar」파일이 작성됩니다만, 새로운 「.jar」파일에는 .class 파일이 아닌 .java 파일이 됩니다(이 파일은 jar를 분해하지 않습니다).
갱신하다
사람들은 나에게 어떻게 양치꽃을 구하느냐고 묻는다.
IntelliJ 제품이 설치되어 있는 경우 Fernflower 디컴파일러가 컴퓨터에 이미 설치되어 있을 수 있습니다.IntelliJ IDEA는 Fernflower의 최신 확장 버전인 Java Bytecode Decompiler 플러그인(번들)을 탑재하고 있습니다.
- .
${IntelliJ_INSTALL_DIR}\plugins\java-decompiler\lib\java-decompiler.jar
( ) C:\Files\C:\Program Files\IntelliJ IDEA 2018\plugins\java-decompiler\lib). - 복사하여 fernflower.jar(옵션)로 이름을 변경합니다.
수 에 JAR를 수 없습니다.
java -jar
다음과 것이 러음java -cp fernflower.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler [<source>]+ <destination>
org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler
디컴파일러를 실행하기 위한 주요 메서드를 포함하는 클래스입니다.예:
mkdir output_src java -cp fernflower.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -hdc=0 -dgs=1 -rsy=1 -lit=1 ./input.jar ./output_src
IntelliJ 제품이 설치되어 있지 않은 경우 지금 다운로드(jetbrains.com에서 이용 가능)하거나 소스(Github에서 이용 가능)에서 자체 디컴파일러 실행 파일을 만드십시오.
기존 프로젝트를 열거나 새 프로젝트를 만듭니다.
Project structure settings > Libraries 순으로 선택합니다.를 클릭하여 라이브러리에서 디컴파일할 jar를 추가합니다.
+
★★★★★★ 。왼쪽에 있는 Project 도구 창으로 이동합니다.이전 단계에서 추가한 jar 이름을 검색합니다.원하는 클래스 또는 패키지로 이동합니다.
해당 jar의 디컴파일된 Java 파일을 볼 수 있습니다.
IntelliJ IDEA의 디컴파일러는 이러한 용도를 염두에 두고 구축되지 않았습니다.이것은 프로그래머가 개발 중인 자바 클래스의 바이트 코드를 엿볼 수 있도록 하기 위한 것입니다.소스 코드가 없는 많은 클래스 파일을 디컴파일하려면 이 작업에 특화된 다른 Java 디컴파일러가 필요합니다.아마도 스탠드아론으로 실행됩니다.구글을 검색하면 많은 것을 찾을 수 있을 것이다.
다음 중 하나를 사용할 수 있습니다(온라인 또는 다운로드 할 수 있습니다.각각의 정보에 대해서는, http://www.javadecompilers.com/ 를 참조해 주세요).
IntelliJ IDEA가 사용하는 것은 fernflower입니다만, String/Enum 스위치, 제네릭스(이것을 개인적으로 테스트한 것은 아니고, 읽어본 것 뿐), 등, 최근의 것에 대응할 수 없습니다.방금 위의 웹사이트에서 CFR을 시험했는데, 결과는 내장 디컴파일러와 동일했습니다(클래스에서 사용하던 Enum 스위치를 제외).
해라
https://github.com/fesh0r/fernflower
에서 jar 다운로드
http://files.minecraftforge.net/maven/net/minecraftforge/fernflower/
명령어:
java -jar fernflower.jar -hes=0 -hdc=0 C:\binary C:\source
jar 파일을 C:\binary 폴더에 저장하면 소스가 추출되어 C:\source 내의 항아리에 포장됩니다.
맛있게 드세요!
얼마 전에 나는 이것을 달성하기 위해 JAD(JAVA 디컴파일러)를 사용했다 - 인텔리J의 디컴파일러가 수출을 염두에 두고 통합되었다고 생각하지 않는다.소스를 사용할 수 없는 클래스를 살펴볼 수 있는 도구에 가깝습니다.
JAD는 아직 다운로드가 가능하지만, 현재는 유지보수가 되지 않는 것 같습니다.http://varaneckas.com/jad/
Jadclipse(이클립스에서 JAD를 사용하는 방법 - 코드를 사용할 수 없는 디컴파일 클래스 참조:)와 같은 수많은 플러그인이 있었습니다.
JD-GUI를 사용하여 모든 디컴파일된 Java 클래스를 Java 파일로 추출합니다.
2022년 갱신
경험이 풍부한 개발자가 정직하게 말하는 것처럼 저도 인정해야 합니다. 저는 게을러요.타이핑은 많으면 많을수록, 적을수록 좋다.@naXa와 @yan의 답변은 단말기를 열고 :-(를 입력하는 것 이외에는 괜찮습니다.
Intellij 내에서 바로 항아리를 디컴파일하려면 재사용 가능한 항목을 만듭니다.JAR Application
실행 구성:
- 알았다.
java-decompiler.jar
(lib를 사용했습니다)가져오기 위치: Windows:C:\Program Files\Intellij\plugins\java-decompiler\lib 또는 from github(매뉴얼은 이쪽) - 소스 jar 또는 클래스 파일을 동일한 폴더에 복사
- 다음과 같은 설정으로 실행 구성을 만듭니다.
Path to JAR:
java-compiler.jar를 참조합니다.Program arguments:
-sysi=0 -dgs=1 -rsy=1 -lit=1 your.jar libWorking directory:
libJRE:
11
이 경우,your.jar
소스 및lib
는 출력 디렉토리입니다.저장, 실행 및 동작 감시 :-)
다른 클래스 파일 또는 항아리를 사용하여 다시 수행해야 합니까?실행 구성 및 업데이트 복제Program arguments
.
누군가가 좋은 대답을 해 주었다.나는 다른 지시 단서를 차근차근 만들었다.먼저 스튜디오를 열고 검색하세요.디컴파이어가 Fernflower라는 걸 알 수 있어요.
둘째, 플러그인 디렉토리에서 찾을 수 있습니다.
/Applications/Android Studio.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar
셋째, 실행해 보세요.사용법을 알 수 있습니다.
java -cp "/Applications/Android Studio.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler
Usage: java -jar fernflower.jar [-<option>=<value>]* [<source>]+ <destination>
Example: java -jar fernflower.jar -dgs=true c:\my\source\ c:\my.jar d:\decompiled\
마지막으로 디컴파일러를 위한 스튜디오의 네스트옵션은 IdeaDecompiler.kt에 따라 다음과 같습니다.
-bls=0 -dgs=1 -rsy=1 -rbr=1 -lit=1 -nls=1 -mpm=60 -bls=1
IFernflowerPreferences.HIDE_DEFAULT_CONSTRUCTOR to "0",
IFernflowerPreferences.DECOMPILE_GENERIC_SIGNATURES to "1",
IFernflowerPreferences.REMOVE_SYNTHETIC to "1",
IFernflowerPreferences.REMOVE_BRIDGE to "1",
IFernflowerPreferences.LITERALS_AS_IS to "1",
IFernflowerPreferences.NEW_LINE_SEPARATOR to "1",
**IFernflowerPreferences.BANNER to BANNER,**
IFernflowerPreferences.MAX_PROCESSING_METHOD to 60,
**IFernflowerPreferences.INDENT_STRING to indent,**
**IFernflowerPreferences.IGNORE_INVALID_BYTECODE to "1",**
IFernflowerPreferences.VERIFY_ANONYMOUS_CLASSES to "1",
**IFernflowerPreferences.UNIT_TEST_MODE to if (ApplicationManager.getApplication().isUnitTestMode) "1" else "0")**
별표 항목에 대한 봉합 옵션을 찾을 수 없습니다.
이러한 단계를 통해 질문이 명확해졌으면 합니다.
언급URL : https://stackoverflow.com/questions/28389006/how-to-decompile-to-java-files-intellij-idea
'programing' 카테고리의 다른 글
Jaxb, 클래스에 동일한 이름의 속성이 두 개 있습니다. (0) | 2022.11.08 |
---|---|
후행 슬래시 없이 문자열 반환 (0) | 2022.11.08 |
MariaDB 기본 키와 고유 키 (0) | 2022.11.08 |
v-tabs-slider가 작동하지 않는 경우 v-tabs-slider를 사용하여 Vuetify하시겠습니까? (0) | 2022.11.08 |
MySQL의 "IF EXISTES" 사용 방법 (0) | 2022.11.08 |