从Jar重新编译Java类

7 java compilation jar classpath

我有一个可执行jar,它有一个类值错误的类文件.我向作者请求了该文件并更正了该值.

现在我想编译它并将已编译的类文件添加到jar中并运行它.

毫不奇怪,我为jar文件中的自定义对象的引用获得了多个"找不到符号"错误.

我尝试通过引用类路径中的jar文件来编译该文件,就像这样

C:/> javac  file.java  -classpath C:/folder/where/jar/is

但这似乎没有用......我得到了同样的错误

C:/> javac file.java

有没有办法编译这个单独的类以某种方式引用jar中的其他文件?

谢谢.


我在遵循以下一些建议时遇到的错误:

javac -classpath C:/jar/location.jar File.java

File.java:226: cannot find symbol
symbol  : class Stuff
location: class com.shared.stuffers
                              Stuff s1 = new Stuff();
                                             ^

在Jar中可以找到Stuff类,但javac程序无法看到...我觉得我做错了但不确定在哪里?谢谢.

Mr.*_*ill 16

您将要编译您的文件,如下所示:

javac -classpath C:\folder\where\jar\is\the_jar_file.jar file.java
Run Code Online (Sandbox Code Playgroud)

根据javac使用说明:

C:\Console2>javac -help
Usage: javac <options> <source files>
Run Code Online (Sandbox Code Playgroud)

  • 缺少基目录(.).命令应该是javac -classpath .; C:\ folder\where\jar\is\the_jar_file.jar file.java (2认同)

Pow*_*ord 9

编译完新文件后(例如在Will先生的回答中),您可以使用以下命令将新文件添加到jar中:

jar uf C:\folder\where\jar\is\the_jar_file.jar file.class
Run Code Online (Sandbox Code Playgroud)


Ada*_*ter 0

您可能必须指定 JAR 文件本身,而不仅仅是它所在的目录。

javac file.java -classpath C:\folder\where\jar\is\the_jar_file.jar
Run Code Online (Sandbox Code Playgroud)