Re-compile a Java Class from Jar

后端 未结 6 1335
长情又很酷
长情又很酷 2020-12-16 05:08

I have an executable jar that has one class file with a wrong value. I requested that file from the author and corrected the value.

Now I want to compile it and add

相关标签:
6条回答
  • 2020-12-16 05:18

    You probably have to specify the JAR file itself and not just the directory it resides in.

    javac file.java -classpath C:\folder\where\jar\is\the_jar_file.jar
    
    0 讨论(0)
  • 2020-12-16 05:29

    You will want to compile your file like so:

    javac -classpath C:\folder\where\jar\is\the_jar_file.jar file.java
    

    per the javac usage instructions:

    C:\Console2>javac -help
    Usage: javac <options> <source files>
    
    0 讨论(0)
  • 2020-12-16 05:32

    I'm just guessing, but did you check whether it doesn't need any external jar libraries you may have to include in your compilation command? Another thing you could do is to compile all of the classes by doing something like

    javac *.java ...
    
    0 讨论(0)
  • 2020-12-16 05:34

    As others have mentioned, once you have the .class file recompiled you need to replace the older version in the .jar

    You'll likely need to have any compile time dependencies available to rebuild this class. If it's an open source project this could be an easy thing to come up with. If not, it's more difficult. If the author sent you the file he can probably help you with this as well. You might be able to get the author to produce a patched distribution for you as well. Odds are he/she already has the build environment set up and this should be relatively easy to do.

    0 讨论(0)
  • 2020-12-16 05:35

    Once you've compiled the new file (such as in Mr. Will's answer), you can add the new file to the jar using:

    jar uf C:\folder\where\jar\is\the_jar_file.jar file.class
    
    0 讨论(0)
  • 2020-12-16 05:37

    I'd try this approach (and it should work, unless the 'debugged' class doesn't introduce a new error):

    1. create a new jar by taking the old one and deleting the classfile that you want to replace
    2. compile the corrected java file and make sure that the modified jar is on the classpath
    3. add the newly compiled classfile to the jar

    This should work. If not - ask the author for a new complete library.

    0 讨论(0)
提交回复
热议问题