java - 如果添加到包中则无法编译 jar

标签 java jar package

问题:我编写了一个 hello world java 程序,编译并创建了它的 jar 文件 - 完美,没有问题。

我现在将以下内容添加到源代码的顶部

package za.ac.uj.csc2a;

保存代码,将所有文件放在正确的目录中,每次我使用此批处理文件进行编译时

del *.class
del *.jar
del *.txt

echo compiling HelloWorld.java.....

javac HelloWorld.java

javap -c HelloWorld.class > ByteCode.txt

jar cfe HelloWorld.jar HelloWorld HelloWorld.class

java -jar za.ac.uj.csc2a.HelloWorld.jar

我明白了,

Error: Unable to acces jarfile za.ac.uj.csc2a.HelloWorld.jar

任何建议......


这是最终的可运行的bat文件

del *.class
del *.jar
del *.txt
RD /Q /S bin

echo compiling HelloWorld.java.....

MD bin

javac -d bin za/ac/uj/csc2a/HelloWorld.java
javap -c bin/za/ac/uj/csc2a/HelloWorld.class > ByteCode.txt
jar cfe HelloWorld.jar za.ac.uj.csc2a.HelloWorld -C bin .
java -jar HelloWorld.jar
pause

非常感谢

艾登

最佳答案

-jar 选项接受文件名,而不是

你应该这样做

java -jar HelloWorld.jar

但请记住,您需要在 list 文件中指定您希望使用 -jar 选项执行的主类。

list 文件应如下所示

Main-Class: za.ac.uj.csc2a.HelloWorld

并将其包含在 jar 命令中的 m 选项中。

此外,您似乎正在将 .class 文件添加到 jar 文件的根目录中。它应该位于 za.ac.uj.csc2a 目录


如果您不想使用 list 文件,您也可以像这样启动它(也许这就是您正在尝试的):

java -cp HelloWorld.jar za.ac.uj.csc2a.HelloWorld

关于java - 如果添加到包中则无法编译 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9211641/

相关文章:

java - Java 项目中的类路径问题

java - 在ubuntu中使用命令行执行jar时出现问题

java - findAll() 在 SpringBoot Rest MySql CRUD 操作应用程序中不起作用

java - 如何在 JavaFX 中使用菜单栏中的 id?

java - Integer[] 上的 IllegalArgumentException : Comparison method violates its general contract!

cordova - 未收到 Windows 10 Packaged Flight 的用户

r - 安装 R 包 readRDS(file) 中出现错误 : error reading from connection

java - 谜语的乐趣

java - 在 WAR 文件的 lib 目录中包含源 JAR(Web 应用程序的)

python-3.x - Ubuntu graphviz 'sfdp' 不工作