Java 无法运行Shell脚本来启动Jar
我有一个windows批处理脚本,它启动一个jar,启动一个完全用Java编写的游戏(它是一个runescape客户端)。它应该会起作用 原始批次(WIN): 我为操作系统制作的Shell文件:Java 无法运行Shell脚本来启动Jar,java,shell,batch-file,Java,Shell,Batch File,我有一个windows批处理脚本,它启动一个jar,启动一个完全用Java编写的游戏(它是一个runescape客户端)。它应该会起作用 原始批次(WIN): 我为操作系统制作的Shell文件: #!/bin/sh echo Your client is loading... echo -------------------- java -Xmx1000m -cp Theme.jar Gui 0 0 highmem members 32 终端中的错误: Your Client is loadi
#!/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脚本
java.lang.ClassNotFoundException
我认为可能有两个原因:
java -Xmx1000m -cp .: Theme.jar Gui 0 0 highmem members 32
as':'是Unix环境的类路径分隔符,而“;”用于Windows。您没有正确转换shell脚本。在Windows版本中,
-cp
参数为。;因此在Linux中它应该是:Theme.jar
,路径分隔符代码>替换为:
,如下所示:
java -Xmx1000m -cp .:Theme.jar Gui 0 0 highmem members 32
ClassNotFoundException
通常表示类路径有问题。(参数-cp
是-classpath
的快捷方式)
根据Windows脚本判断,Gui
是一个类名,其余是传递给Gui
类的命令行参数。错误消息告诉您它找不到Gui
类。它必须位于当前目录或主题.jar
中。如果它们中没有任何一个,那么这就无法工作。为什么要将当前文件夹包括到批处理中的类路径中,而不包括在shell脚本中?我说的是-cp。;Theme.jar
在批处理中,但是shell文件中有-cp-Theme.jar
。如果我这样做了,我会遇到这个错误(太长了,无法发布)。请尝试在。:和Theme.jar之间不留空格,我的意思是尝试使用。:Theme。jar@Nicco可能是因为在:
之后出现了意外的空格字符。确保:Theme.jar
中没有空格。是的,我确实删除了:(仍然不工作,并且出现了原始错误。这是古怪的windows执行此操作java-verbose-Xmx1000m-cp Theme.jar Gui 0 0 highmem mem members 32
这将打印正在加载的所有类和src类(如果文件不在jars中)或者jar文件名。可能您没有将某些内容从windows复制到linux/iOs。也可以在linux中的dir上运行chmod 777*,以便所有用户都可以加载所有文件。试试这个,java-Xmx1000m-cp-Theme.jar:./Gui 0 0 highmem成员32@Nicco在您运行此程序的目录中是否有Gui.class
文件?或者如果您有jar tf Theme.jar | grep Gui.class
你得到了什么?Gui 0 0 highmem成员32不是变量吗?我没有编写原始批处理,我只知道它在Windows上工作。我应该如何包含你的解决方案?@Nicco根据Windows脚本判断,Gui是一个类名,其余是传递给Gui
类的命令行参数。错误消息告诉你它找不到Gui
类。它必须在当前目录或theme.jar
中。如果它不在任何目录中,则无法工作。你在我之前的评论中没有回答我的问题。我得到了这个btw pastie.org/8918043它只有一半是由于复制limits@Nicco这不可能是我要求的结果epeat:在您运行这个程序的目录中是否有一个Gui.class
文件?或者如果您有jar tf Theme.jar | grep Gui.class
您得到了什么?
java -Xmx1000m -cp .:Theme.jar Gui 0 0 highmem members 32