我创建了一个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可执行文件的路径):
谢谢!
答案 0 :(得分:1)
我不清楚你的意思"我测试了强制使用;
即使在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 ......但这是最后的手段,可能会导致其他问题。