我有一個java程序,它連接到我的數據庫並驗證一些報告併發送一封電子郵件到特定的郵件ID。還有一個調用這個java類的批處理腳本。這個java類需要javax.activation.jar,javax_mail.jar,ojdbc14.jar,我在一些文件夾中保留了批處理和java文件。Windows批處理腳本無法通過Windows調度程序找到庫的路徑
當我通過直接從它所在的路徑執行批處理腳本來運行程序時,程序工作併發送電子郵件。
但現在我已經安排了這個批處理腳本,使用Windows調度程序每運行一小時。那時,我的java說有編譯錯誤,無法找到所需的依賴類。
我的批處理文件看起來像這樣。
@echo off
cd D:\CPP\scheduler\JOB_REPORTS_MAIL
D:
:: compile the Main class and helper classes
javac Constants.java
javac DBUtility.java
javac -cp ".;javax.activation.jar;javax_mail.jar;ojdbc14.jar" SendJobStatusEmail.java
javac -cp ".;javax.activation.jar;javax_mail.jar;ojdbc14.jar" JobReportScheduler.java
:: Run the Main class
java -cp ".;javax.activation.jar;javax_mail.jar;ojdbc14.jar" JobReportScheduler
如果我刪除下面的線從我的批處理它無法通過Windows調度
cd D:\CPP\scheduler\JOB_REPORTS_MAIL
D:
跑我想刪除這兩條線。當調度程序選擇批處理文件並執行它時,它應該能夠從該批處理目錄下的lib文件夾中選擇獨立的jar。
它不應該依賴於哪個機器,在哪個機器上驅動它,以便我可以放入任何Windows機器並使用Windows調度程序執行。
我試過不同的選項沒有什麼作用。請在這裏幫助我。
是的,我試過了。但它只在從D:\ CPP \ scheduler \ JOB_REPORTS_MAIL路徑運行批處理時纔有效。當我從Windows調度程序計劃時,它無法獲取路徑。 –
我不需要重新編譯類。我必須刪除這些。我的意圖是刪除硬編碼。如果我硬編碼這將迫使我把文件保存在一個地方。如果我把它移到另一臺沒有D驅動器的機器上,我必須改變那裏的路徑。另外我不想在java命令中提到jar文件的名字。如果我通過批處理腳本將它們保存在「lib」文件夾「D:\ CPP \ scheduler \ JOB_REPORTS_MAIL」中,我希望將所有內容添加到類路徑中,比如使用for循環(for循環它在命令提示符下工作,但失敗當批處理腳本被調度程序調用時) –
然後請顯示要作爲計劃任務運行的*實際*代碼。我們不是在這裏玩猜謎遊戲。 –