2016-08-31 108 views
1

我想设置一个执行一个shell文件的cronjob(cPanel),它将运行java应用程序。但是我无法获得班级路径的工作。用cronjob运行JAVA的Linux命令

JAVA文件夹应用程序路径

/home/user/public_html/version_1/data/downloader 

sh文件内这个命令通过终端与JAVA应用文件夹内

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 

所以我尝试具体的类路径

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 

它仍然呈现

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) 
+1

你在一个错误的目录 – Jens

+0

显示运行代码在'portal.client.DownloadParameter.parseLoginParam(DownloadParameter.java:177)'' – talex

回答

2

嘛错误。您需要更改workdir。你可以简单地通过使用cd

cd /home/user/public_html/version_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 login 
-1

您是否尝试创建一个脚本来设置你的环境,然后解雇你的java程序做呢?

你的脚本看起来是这样的:

#!/bin/sh 
export CLASSPATH=<paths to files> 
java <your program> 

可以删除你的脚本放到crontab中,然后和你一样喜欢它玩弄,而无需更改您的内容。

+0

'附近的代码如何帮助修复在当前目录中被serced文件的问题不存在? – talex

+0

它有帮助,因为它允许修改脚本,而不必一直与crontab混淆 – djb

-1

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

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

,那么你可以不经过任何额外的参数运行jar文件

+0

它不会修复当前目录中搜索到的文件的问题没有找到? – talex

+0

@talex为什么在类路径中设置log4j.properties的路径不会修复问题? – Amir

+0

因为主要问题是“线程中的异常”main“java.lang.IllegalArgumentException:InputStream不能为null”,我怀疑这是错误的文件路径。 – talex