无法运行Shell Script来启动Jar

时间:2014-03-14 06:07:09

标签: java shell batch-file

我有一个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脚本?

3 个答案:

答案 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

我认为可能有两个原因:

  1. 运行java程序时包含的jar文件不包含在为shell脚本创建的jar文件中。

  2. 在创建jar文件时,您尚未在manifest.mf文件中定义Main-Class。

答案 2 :(得分:0)

尝试使用它,

java -Xmx1000m -cp .: Theme.jar Gui 0 0 highmem members 32

as':'是Unix环境的类路径分隔符,而';'适用于Windows。