将bat文件转换为包含java命令的脚本文件

时间:2012-09-02 11:58:06

标签: java shell jar batch-file classpath

我有一个java应用程序,其中包含run.bat文件,如下所示:

rem set path=D:/Applns/jdk1.5/bin
set classpath=.;lib/derby.jar;lib/mail.jar;lib/activation.jar;lib/commons-codec-1.3.jar
start javaw net.sf.veettukaaran.appclient.ApplicationController

当我在Windows中运行此run.bat时,应用程序正常工作。但是我想在ubuntu 12.04中运行它。所以我尝试将run.bat转换为run.sh,如下所示:

# /bin/sh
java -classpath './lib/derby.jar:lib/mail.jar:lib/activation.jar:lib/commons-codec-1.3.jar' net/sf/veettukaaran/appclient/ApplicationController

当我按./run.sh运行此脚本时,它为我提供了类未找到的异常,如下所示:

Caused by: java.lang.ClassNotFoundException: net.sf.veettukaaran.appclient.ApplicationController
    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)
Could not find the main class: net/sf/veettukaaran/appclient/ApplicationControll.  Program will exit.

有人可以指出我做错了什么吗?我检查了classpath和类文件中指定的jar文件的路径,这是正确的。其他一些想法可能是错的?

由于

2 个答案:

答案 0 :(得分:0)

替换以下

java -classpath './lib/derby.jar:lib/mail.jar:lib/activation.jar:lib/commons-codec-1.3.jar' net/sf/veettukaaran/appclient/ApplicationController

java -classpath '.:./lib/derby.jar:lib/mail.jar:lib/activation.jar:lib/commons-codec-1.3.jar' net.sf.veettukaaran.appclient.ApplicationController

请注意,我刚刚向您的.添加了当前目录classpath,并通过将/替换为.

答案 1 :(得分:0)

我终于可以运行run.sh文件了。它看起来如下:

# /bin/sh
java -cp ':./lib/derby.jar:./lib/mail.jar:./lib/activation.jar:./lib/commons-codec-1.3.jar' net.sf.veettukaaran.appclient.ApplicationController

之后我运行此命令:“dos2unix run.sh”然后我运行./run.sh。这样就可以执行应用程序了。

我为了你的回答而惹恼你们。

相关问题