我有一个Windows批处理脚本,它启动一个jar,它启动一个用Java编写的游戏(它是一个runescape客户端)。它应该工作。
原始批次(WIN):
@echo off
@echo Client Is loading......
@echo -----------------------
java -Xmx1000m -cp .;Theme.jar Gui 0 0 highmem members 32
pause
我为操作系统制作的Shell文件:
#!/bin/sh
echo Your client is loading...
echo --------------------
java -Xmx1000m -cp Theme.jar Gui 0 0 highmem members 32
终端中的错误:
Your Client is loading...
--------------------
Exception in thread "main" java.lang.NoClassDefFoundError: Gui
Caused by: java.lang.ClassNotFoundException: Gui
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
我如何修复它或制作一个与批处理完全相同并实际运行的shell脚本?
答案 0 :(得分:1)
您没有正确转换shell脚本。在Windows版本中,-cp
参数为.;Theme.jar
,因此在Linux中它应为.:Theme.jar
,路径分隔符;
替换为:
,如下所示:< / p>
java -Xmx1000m -cp .:Theme.jar Gui 0 0 highmem members 32
ClassNotFoundException
通常表示类路径有问题。 (-cp
参数是-classpath
)的快捷方式。
根据Windows脚本判断,Gui
是类名,其余是传递给Gui
类的命令行参数。该错误消息告诉您它找不到Gui
类。它必须位于当前目录或theme.jar
中。如果它不在其中任何一个,那么这不起作用。
答案 1 :(得分:0)
java.lang.ClassNotFoundException
我认为可能有两个原因:
运行java程序时包含的jar文件不包含在为shell脚本创建的jar文件中。
在创建jar文件时,您尚未在manifest.mf文件中定义Main-Class。
答案 2 :(得分:0)
尝试使用它,
java -Xmx1000m -cp .: Theme.jar Gui 0 0 highmem members 32
as':'是Unix环境的类路径分隔符,而';'适用于Windows。