java - Mac OS 上的类路径错误

标签 java macos classpath

我创建了一个 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 可执行文件的路径):

http://pastebin.com/8V3pg07q

你能帮我吗?我不需要有关如何玩 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/

相关文章:

java - 调用 bazel 构建的 java 程序的原始命令行是什么?

java - PDF 文件返回为使用 Java(Java EE) 创建和下载的不受支持的格式

java - 为什么 Apache POI XSSF 无法写入 servlet 响应输出流?

linux - 将本地计算机上的文件(代码)与远程服务器同步

objective-c - 获取 public.movi​​e UTI 的文件扩展名列表

java - 在 mac os 中,使用 rxtx 时,加载 gnu.io.RXTXCommDriver 时抛出 java.lang.UnsatisfiedLinkError : no rxtxSerial in java. library.path 错误

java - 如何使用外部类路径执行可运行的 jar?

java - 动态注册的第三方 Bean 上的类似 Spring 的后处理器 Hook

java - 在 Android 中使用 ContactsContract 检索电话号码 - 功能不起作用

macos - 如何将docker-machine创建的VM绑定(bind)到OSX IP地址?