2012-07-05 189 views
4

我有一個maven項目,其中,我正在嘗試執行腳本(用R編寫)。我也把這個腳本文件放在源代碼目錄中。我發現這個腳本完全沒有執行。但是,當我將此腳本移到jar文件外時,它會執行!任何人都可以告訴我爲什麼,並給我一些解決方案,將腳本放入jar中,同時確保其執行?如何從JAR文件執行腳本?

非常感謝!裏面罐子

回答

6

我會做到以下幾點:

  • 獲取的InputStream與ClassLoader.getResourceAsStream()文件
  • 寫這篇文章的InputStream TMP的目錄
  • 與調用Runtime.getRuntime執行它()。執行(..)
+0

到目前爲止的最佳答案。 – carlspring

+0

@carlspring是的,我同意,但最好給步驟2的一點點代碼。我不知道如何創建臨時文件,臨時定位,並在退出時刪除它?謝謝〜 –

+0

@EnsomHodder創建類似這樣的用法:File.createTempFile(「prefix」,「suffix」) –

1

文件不再是一個文件,所以它執行首先需要extract it somewhere,然後從外部提取的文件路徑執行它

+0

你的意思是提取出完整的jar文件或僅腳本文件來執行?你能告訴我如何從jar中提取單個文件嗎? –

+0

只需從jar中提取所需的文件,查看鏈接以獲取更多詳細信息,從答案 –

+0

感謝您的幫助。腳本執行後,我必須刪除提取的文件。似乎它不是很乾淨〜但最重要的是,它的工作原理 –

1

您需要提取的jar文件中的腳本:

jar -xvf my.jar com/foo/my.script.sh 
+0

的類,所以你的意思是從Java程序執行這個命令更好,然後執行第二個命令(解壓文件)?它似乎很簡單,並沒有任何外部庫支持〜 –