我有我的应用程序的jar文件。
当我使用java -cp "jarfile.jar" com.my.MainClass
运行它时,它可以正常工作,但是如果我将其提供给其他开发人员,则很容易出现此错误:
Error: Could not find or load main class com.my.MainClass
Caused by: java.lang.ClassNotFoundException: com.my.MainClass
就这样,仅在Mac上不起作用。 (Windows很好)
Mac Java版本:
openjdk version “11.0.2” 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
Windows Java版本:
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
我没有任何sun。*依赖项。仅在java.util,java.net,java.io,java.nioorg.junit(捆绑在jar中)下找到依赖项。
愿意在必要时提供更多信息,只是不知道缺少什么。
答案 0 :(得分:1)
您可以尝试一下并确保您必须位于com目录的父文件夹中吗 从您的问题MainClass在以下软件包层次结构com-> my-> MainClass.java中 并且您的类文件MainClass.class也将出现在相同的包层次结构中。
运行此MainClass时,您必须位于com文件夹的父目录中,并尝试使用以下命令进行编译或运行
在Windows中: 进行编译(确保在com目录的父文件夹中执行此命令)
javac -cp“ jarfile.jar;”。 com \ my \ MainClass.java
java -cp“ jarfile.jar;”。 com.my.MainClass
对于Mac或Linux(确保您在com目录的父文件夹中执行此命令)
javac -cp“ jarfile.jar:”。 com / my / MainClass.java
java -cp“ jarfile.jar:”。 com.my.MainClass