I'm new to Java and I'm trying to understand something. I managed to get a .jar file for a local device to communicate with my laptop. It works fine, but I would like to do an upgrade and scoop around the codes and change some details. I used a Java Decompiler on the .jar file and managed to take a look at the class files. However, whenever I decompile them into source codes, errors will occur in my IDE, and I'm unable to build them. What exactly happened? If it's working fine in the .jar why does it produce errors?
Using Java Decompiler (JD-GUI) on a .class file gives me multiple errors on src file, but it runs fine within a .jar? How does it work?
3.5k Views Asked by AudioBubble At
2
There are 2 best solutions below
0
user12377884
On
Completely agree with Antimony. There is no decompiler which decompiles always without any error. Sometimes it decompiles well, sometimes not.
The best way is to have several decompilers and use them each by other to decrease errors in decompiled source.
If you use Eclipse I would suggest https://marketplace.eclipse.org/content/enhanced-class-decompiler
If you use IntelliJ try this decompiler Jar Explorer.
Related Questions in JAVA
- I need the BIRT.war that is compatible with Java 17 and Tomcat 10
- Creating global Class holder
- No method found for class java.lang.String in Kafka
- Issue edit a jtable with a pictures
- getting error when trying to launch kotlin jar file that use supabase "java.lang.NoClassDefFoundError"
- Does the && (logical AND) operator have a higher precedence than || (logical OR) operator in Java?
- Mixed color rendering in a JTable
- HTTPS configuration in Spring Boot, server returning timeout
- How to use Layout to create textfields which dont increase in size?
- Function for making the code wait in javafx
- How to create beans of the same class for multiple template parameters in Spring
- How could you print a specific String from an array with the values of an array from a double array on the same line, using iteration to print all?
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- Postgres && statement Error in Mybatis Mapper?
Related Questions in JAR
- how to add the button onto the furnace GUI in minecraft
- How to use Gradle to add JAR library for Flutter project?
- Having trouble executing my program from a jar, using Jinput
- how to add the button onto the mc mod without errors?
- How to run standalone files created by anylogic in matlab?
- Java .jar file not working as expected after an edit
- How can I create an executable (from a JAR) with the --enable-preview option in Launch4J?
- How to Run cucumber test cases from jar? Jar not able to find stepdefinitions?
- JavaFX issues to build an artifact and jar
- How to fix error and what causes: Error: Main method is not static in class
- How to Use an External JAR Offline in a Maven Project for Servlets Without Internet Access?
- mvn package is failing -Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tool
- How do I download Hibernate 6.4.4 JARs?
- JavaFX: how to build fat jar without needing to specify --module-path and --add-modules during execution
- Editing .jar file by removing dependent jars and then replacing them
Related Questions in DECOMPILER
- Can't decompile APK file properly
- Decompile .class file ,bytecode version :52.0 (java 8)
- Type information system recovery
- Class-File-Editor.Source-not-found Source Attachment Doesn't Have Source-File ReflectionUtils.class
- C# does the compiler leave re-references in the final binary?
- How can I identify functions and their size in a x86-64 executable binary (PE)
- Why is storing secrets in android gradle recommended if it can be decompiled like hardcoded string?
- Is there any good examples of jvm reuse LocalVariableTable slot?
- Getting a weird character when decompiling source code
- Decompilation independent pattern structuring of cfg
- Moshi Json - Decompiled code still shows annotated name
- where is .so in flutter
- Unable to configure Java Decompiler in Eclipse 2023-06
- Reverse Engineering for hexadecimal machine code
- Decompile .pyc in python 3.11 Fail: "Unsupported opcode: POP_JUMP_FORWARD_IF_FALSE"
Related Questions in JD-GUI
- Why some class cannot be jumped into for investigation in jd-gui for android app?
- Unusual method appeared when decompiling JAR file into java project
- Where are external libraries in a jar file?
- Duplicate a javaws application to edit
- Issue java.util.zip.ZipError: zip END header not found when open JAR with JD-GUI
- Using Java Decompiler (JD-GUI) on a .class file gives me multiple errors on src file, but it runs fine within a .jar? How does it work?
- Why can't I get the source code by apktool?
- Why does AspectJ generate an empty Annotation check?
- jd gui doesnt open on win10
- How to decode those JD-GUI error decompiled Bytecode
- It is possible to recover the src from a deployed .WAR file?
- dex2jar error: handleHotSwapPatch + FragmentManagerImpl
- Why .Jar decompiling result is different in decompilers?
- How to understand the synthetic accessor code generated by jd-gui?
- How to get source code from .class file( class file version is 1.2)
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Compilation is a lossy process, so decompilation is always a "best effort" endeavor. Java bytecode is unusually high level, so Java decompilation is relatively easy compared to other languages, but it will still never be 100% complete. Therefore, you should not be surprised to see errors when re-compiling decompiled source.
If you want to work directly with bytecode, I would recommend using the Krakatau disassembler and assembler. Instead of decompiling to Java source, the disassembler converts bytecode into a human readable assembly format which is specifically designed to be converted to and from bytecode losslessly. However, it requires a good understanding of low level Java bytecode to use.