繁体   English   中英

从Shell脚本运行Java文件

[英]running java file from shell script

我是刚开始通过Shell脚本运行Java文件,对于那些经验丰富或对Shell脚本了解甚少的人来说,这可能是一个非常基本的问题。 我在下面有一个名为Main.java的Java文件

C:\project\Tranmissions\com.abc.files\src\main\java\com\abc\files
   +Main.java

我有一个名为run.sh的shell脚本:

#!/bin/bash

java -Xmx300m -classpath com.abc.files.Main -mainclass com.abc.files.payroll.f401k.xyz.AdpCwMain -driver org.hsqldb.jdbc.JDBCDriver

exit $?

这个脚本我放在

C:\project\Tranmissions\com.abc.files.

现在,我已经下载了cygwin以运行脚本

./run.sh 

运行此命令时,出现以下基本Java错误:

java.lang.NoClassDefFoundError: com/abc/files/Main
Caused by: java.lang.ClassNotFoundException: com.abc.files.Main
        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: com.abc.files.Main.  Program will exit.
Exception in thread "main"

我正在使用带有maven命令install的STS(Eclipse)运行Java文件。 并能够运行我的类“ Main” java程序。

您无需指定-mainclass ,只需为类提供main即可。 此外,类路径也具有您的类的com.abc前缀。 您可能希望将classpath作为当前目录,然后提供您的类。 如果您的JDBC不在类路径中,您还将收到一个错误。 尝试这样的事情:

java -Xmx300m -classpath . \
  com.abc.files.payroll.f401k.xyz.AdpCwMain \
  -driver org.hsqldb.jdbc.JDBCDriver

使用#!/bin/bash -x以显示实际执行的命令。

您在名为Main.java的文件上调用“ java”命令,则应首先使用“ javac”编译Main.java类。 当程序以.class结尾时使用“ java”,即Main.class

在执行该行之前,您无需编译代码。

run.sh中缺少javac行

您为什么不尝试j2sch,它会使您的生活变得更加简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM