2016-08-31 12 views
1

javaアプリケーションを実行するシェルファイルを実行するcronjob(cPanel)をセットアップしようとしています。しかし、私はクラスパスを動作させることはできません。それはdoens'tフォルダの外に実行しているときに端子を介してとLinuxコマンドJAVAでcronjobを実行中

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 

しかしJAVAアプリケーションフォルダ内で実行しているとき

JAVAフォルダアプリケーションパス

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

.SHファイル内のこのコマンドは、働いています次のエラーを返します。

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

ショーでコードを実行する任意の追加の引数を渡すことなく、あなたのjarファイルを実行することができます'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プログラムを起動するスクリプトを作成しようとしたことがありますか?あなたはその後、crontabファイルにスクリプトをドロップすると、あなたのエントリを更新することなく、同じくらい好きなようにそれをひねりでき

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

スクリプトは次のようになります。

+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 

は、あなたは

+0

現在のディレクトリで検索されたファイルの問題を解決できませんか? – talex

+0

@talexなぜクラスパスでlog4j.propertiesのパスを設定しても問題は解決しないのですか? – Amir

+0

主な問題は「スレッド内の例外」ですので、主な「java.lang.IllegalArgumentException:InputStreamはnullにはなれません」という誤ったファイルパスがあります。 – talex

関連する問題