仅 Mac:无法找到或加载主 class
Mac only: Could not find or load main class
我有我的应用程序的 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 中)。
如有必要,很乐意提供更多信息,只是不知道缺少什么。
你能试试这个并确保你必须在 com 目录的父文件夹中吗
根据您的问题,MainClass 位于以下包层次结构中 com->my->MainClass.java
并且您的 class 文件 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
我有我的应用程序的 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 中)。
如有必要,很乐意提供更多信息,只是不知道缺少什么。
你能试试这个并确保你必须在 com 目录的父文件夹中吗 根据您的问题,MainClass 位于以下包层次结构中 com->my->MainClass.java 并且您的 class 文件 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