[英]"Could find or load main class" while running executable jar file in Java code
使用 Windows 10 中命令提示符中的命令将我的 java 程序转换为可执行的 jar 文件后,在执行 jar 文件时出现错误:
可以找到或加载主类 Combine.class” 引起:java.lang.ClassNotFoundException:Combine.class
我的 jdk-11.0.1 有 javamail api 和 excelapi.While 执行我已将我的类路径设置为:
classpath=%classpath%;C:\Program Files\Java\jdk-11.0.1\javamail_api\javax.mail-1.6.2.jar;C:\Program Files\Java\jdk-11.0.1\javamail_api\activation.jar;C:\Program Files\Java\jdk-11.0.1\jexcelapi\jxl.jar;.;
它正在正确编译和执行,但在转换为可执行 jar 文件后,它没有运行并出现上述错误。
任何帮助,将不胜感激。 谢谢
线索在异常消息中。 它正在尝试加载名为Combine.class
的类。 但是这些类的真实名称是Combine
。
您错误地创建了 JAR 文件。
echo Main-Class: Combine.class > manifest.txt
jar cmf manifest.txt FinalExecutable.jar Combine.class
如果Combine
在默认包中(即它没有package
语句),那么上面的应该是:
echo Main-Class: Combine > manifest.txt
jar cmf manifest.txt FinalExecutable.jar Combine.class
如果Combine
在包被宣告foo.bar
,那么上述应。
echo Main-Class: foo.bar.Combine > manifest.txt
jar cmf manifest.txt FinalExecutable.jar foo/bar/Combine.class
并且您需要在foo
目录上方的目录中。
注意:清单中的“Main-Class”属性必须是 Java 完全限定的类名,而不是文件名或文件路径名。
还应该注意的是,当您使用java -jar ...
运行 JAR 时,将忽略CLASSPATH
环境变量和-cp
参数。 如果您的可执行 JAR 依赖于其他 JAR 文件,您应该将它们组合起来(以创建阴影 JAR),或者您应该向清单添加“Class-Path”属性; 见https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html
最后,我的建议是使用构建工具(例如 Maven)来编译您的代码、创建可执行的 JAR 文件等,而不是手动完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.