Har*_*thi 3 java unix bash shell jar
我DirectoryScanner.jar在Windows 7中创建了一个jar文件.我想在unix服务器上执行这个jar.我在putty中运行了以下命令,jar按预期运行完全正常:
java -jar DirectoryScanner.jar
Run Code Online (Sandbox Code Playgroud)
现在我想在unix服务器上创建一个.sh文件,在执行时可以运行这个jar.我创建了一个文件Report.sh,在其中我编写了以下代码来执行这个jar:
java -cp /home/applvis/Java/UAT/lib/DirectoryScanner.jar com.acc.directory.scanner.SDScanner
Run Code Online (Sandbox Code Playgroud)
但是当我在putty中执行此命令时,它显示以下错误:
[applvis@bg6lnxebs1 UAT]$ . ./ReportGen.sh
Exception in thread "Main Thread" java.lang.NoClassDefFoundError: com/acc/directory/scanner/SDScanner
Caused by: java.lang.ClassNotFoundException: com.acc.directory.scanner.SDScanner
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: com.acc.directory.scanner.SDScanner. Program will exit.
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我究竟我做错了什么,或者建议一些替代命令.
我的jar和sh文件都在不同的目录中.即使它们在同一目录中,我也会收到此错误.
PS.我有很多jar文件要一个接一个地执行.因此,我不想一次又一次地编写命令来在unix上分别运行每个jar,我想创建一个sh文件,它将包含一个接一个地运行所有jar的代码.我只需运行sh文件就更容易了.因此我需要将代码写入sh文件中,该文件可以运行我的jar.
在shell脚本中,切换到包含jar文件的目录.可能不是最佳实践,但我一直使用它来模拟脚本启动的"工作目录".这样我的shell脚本就可以安装在一个scripts目录中,我的Java可以安装在一个lib目录中.
假设您执行脚本时的环境与从命令行调用java时的环境相同.
#!/bin/sh
cd /home/applvis/Java/UAT/lib
java -jar DirectoryScanner.jar
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38089 次 |
| 最近记录: |