我创建了一个 Java 应用程序,它使用 java -cp "xxx.jar;xxx.jar" net.minecraft.client.main.Main
运行另一个 Java 代码。命令。 ;
(或 :
取决于操作系统)两个 JAR 之间的类路径由 System.getProperty("path.separator")
提供。功能。
在 Windows 上它可以正常工作,但在 Mac OS 上则不行。 Java 说无法找到或加载主类 net.minecraft.client.main.Main
。我检查过,类路径的 JARS 拼写正确并且存在于硬盘驱动器上的正确路径上。
这是整个命令( /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
是 Java 可执行文件的路径):
你能帮我吗?我不需要有关如何玩 Minecraft 的帮助,它不是官方启动器(这是我制作的,显然不适用于 Mac OS),所以不要告诉我在 Minecraft 论坛上寻求帮助:
谢谢!
最佳答案
不清楚“我测试了即使在 Mac OS 上也强制使用 ;
”的含义,但基本上,当您运行新的 Java 进程时,您应该为平台使用正确的路径分隔符。
所以在 Windows 上你会想要:
java -cp xxx.jar;yyy.jar
在 Unix 上你会想要
java -cp xxx.jar:yyy.jar
在构建命令行参数的代码中,只需确保正确使用 path.separator
属性(或更简单地说 File.pathSeparator
),以便可以构建正确的命令无需检测实际操作系统。
编辑:我不知道为什么这目前不适合您,除非是因为命令行本身太长。
您可以考虑将所有相关的 jar 文件放入一个目录中,然后使用:
java -cp 'somedirectory/*' net.minecraft.client.main.Main
或者,使用 extensions mechanism ...但这是最后的手段,并且可能会导致其他问题。
关于java - Mac OS 上的类路径错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22747346/