使用cronjob运行JAVA的Linux命令

使用cronjob运行JAVA的Linux命令,java,linux,Java,Linux,我正在尝试设置一个cronjob(cPanel),它执行一个shell文件,该文件将运行java应用程序。但是,我无法使类路径正常工作 JAVA文件夹应用程序路径 /home/user/public_html/version_1/data/downloader 当在终端和JAVA应用程序文件夹中运行时,该命令在.sh文件中起作用 java -cp .:download.jar:log4j.jar:commons-httpclient.jar:commons-fileupload.jar:com

我正在尝试设置一个cronjob(cPanel),它执行一个shell文件,该文件将运行java应用程序。但是,我无法使类路径正常工作

JAVA文件夹应用程序路径

/home/user/public_html/version_1/data/downloader
当在终端和JAVA应用程序文件夹中运行时,该命令在.sh文件中起作用

java -cp .:download.jar:log4j.jar:commons-httpclient.jar:commons-fileupload.jar:commons-logging.jar:commons-codec.jar:JAxe-1.0.jar portal.client.Main login
但是,当在文件夹外运行时,它不工作,并返回以下错误

Error: Could not find or load main class portal.client.Main
log4j:ERROR Could not read configuration file [log4j.properties].
java.io.FileNotFoundException: log4j.properties (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:146)
    at java.io.FileInputStream.<init>(FileInputStream.java:101)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297)
    at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315)
    at portal.client.Main.main(Main.java:32)
log4j:ERROR Ignoring configuration file [log4j.properties].
log4j:WARN No appenders could be found for logger (portal.controller.MainController).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.IllegalArgumentException: InputStream cannot be null
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:117)
    at portal.client.DownloadParameter.parseLoginParam(DownloadParameter.java:177)
    at portal.controller.MainController.execute(MainController.java:45)
    at portal.client.Main.main(Main.java:130)
因此,我尝试使用特定的类路径

java -cp /home/user/public_html/version_1/data/downloader/*:.download.jar:log4j.jar:commons-httpclient.jar:commons-fileupload.jar:commons-logging.jar:commons-codec.jar:JAxe-1.0.jar th.or.set.portal.client.Main login
它仍然显示错误

Error: Could not find or load main class portal.client.Main
log4j:ERROR Could not read configuration file [log4j.properties].
java.io.FileNotFoundException: log4j.properties (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:146)
    at java.io.FileInputStream.<init>(FileInputStream.java:101)
    at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297)
    at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315)
    at portal.client.Main.main(Main.java:32)
log4j:ERROR Ignoring configuration file [log4j.properties].
log4j:WARN No appenders could be found for logger (portal.controller.MainController).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.IllegalArgumentException: InputStream cannot be null
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:117)
    at portal.client.DownloadParameter.parseLoginParam(DownloadParameter.java:177)
    at portal.controller.MainController.execute(MainController.java:45)
    at portal.client.Main.main(Main.java:130)
log4j:错误无法读取配置文件[log4j.properties]。
java.io.FileNotFoundException:log4j.properties(没有这样的文件或目录)
在java.io.FileInputStream.open(本机方法)
位于java.io.FileInputStream。(FileInputStream.java:146)
位于java.io.FileInputStream。(FileInputStream.java:101)
位于org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297)
在org.apache.log4j.PropertyConfigurator.configure上(PropertyConfigurator.java:315)
位于portal.client.Main.Main(Main.java:32)
log4j:忽略配置文件[log4j.properties]时出错。
log4j:警告找不到记录器(portal.controller.MainController)的追加器。
log4j:警告请正确初始化log4j系统。
线程“main”java.lang.IllegalArgumentException中的异常:InputStream不能为null
位于javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:117)
位于portal.client.DownloadParameter.parseLoginParam(DownloadParameter.java:177)
位于portal.controller.MainController.execute(MainController.java:45)
位于portal.client.Main.Main(Main.java:130)

很好。你需要换工作。你只需使用

cd/home/user/public\u html/version\u 1/data/downloader/
java-cp.:download.jar:log4j.jar:commons-httpclient.jar:commons-fileupload.jar:commons-logging.jar:commons-codec.jar:JAxe-1.0.jar-portal.client.Main登录

很好。你需要换工作。你只需使用

cd/home/user/public\u html/version\u 1/data/downloader/
java-cp.:download.jar:log4j.jar:commons-httpclient.jar:commons-fileupload.jar:commons-logging.jar:commons-codec.jar:JAxe-1.0.jar-portal.client.Main登录

您是否尝试过创建脚本来设置环境,然后启动java程序

您的脚本将类似于:

#!/bin/sh
export CLASSPATH=<paths to files>
java <your program>
#/垃圾箱/垃圾箱
导出类路径=
JAVA

您可以将脚本放到crontab中,然后在不更新条目的情况下随意使用它。

您是否尝试过创建脚本来设置环境,然后启动java程序

您的脚本将类似于:

#!/bin/sh
export CLASSPATH=<paths to files>
java <your program>
#/垃圾箱/垃圾箱
导出类路径=
JAVA

然后,您可以将脚本放入crontab中,并随意使用它,而无需更新条目。

您可以在jar包的manifest文件中设置类路径

Manifest-Version: 1.0
Implementation-Title: myapp
Implementation-Version: 1.0.1
Class-Path: lib/dep1.jar lib/dep2.jar

然后,您可以运行jar文件而无需传递任何附加参数

您可以在jar包的清单文件中设置类路径

Manifest-Version: 1.0
Implementation-Title: myapp
Implementation-Version: 1.0.1
Class-Path: lib/dep1.jar lib/dep2.jar

然后,您可以在不传递任何附加参数的情况下运行jar文件

您在错误的目录下运行代码在portal.client.DownloadParameter.parseLoginParam(DownloadParameter.java:177)上显示代码(DownloadParameter.java:177)解决当前目录中缺少文件的问题有什么帮助?它有帮助,因为它允许修改脚本而不必不断地乱动crontab。它如何帮助解决当前目录中缺少文件的问题?它有帮助,因为它允许修改脚本而不必乱动crontabh crontab constantlyIt无法修复在当前目录中搜索的文件未找到的问题?@talex为什么设置log4j的路径。类路径中的属性无法修复问题?因为主要问题是线程“main”中的
异常java.lang.IllegalArgumentException:InputStream不能为null,我怀疑这是错误的文件路径。它不会解决在当前目录中搜索的文件的问题,但没有找到?@talex为什么设置log4j的路径。类路径中的属性不会解决问题?因为主要问题是线程“main”中的
异常java.lang.IllegalArgumentException:InputStream不能为null
,我怀疑这是错误的文件路径。