2016-05-03 108 views
0

如果我運行如下的jar java -jar Name.jar arg1 arg2 arg3 可以理解的是,在導出(創建.jar)時,我必須指定Eclipse運行配置以識別主要方法,因爲可能存在儘可能多的類的主要方法。Eclipse運行配置煩惱

如果我在Eclipse中運行一個主程序,它將默默創建一個新的運行配置,這會在我想要導出時增加更多混亂的運行配置選項。如果我爲許多類做這個,那麼我有很多基本相同的運行配置,唯一的區別就是指定的主要方法。

如果我運行一個罐子如下

java -cp Name.jar package.MyObject arg1 arg2

java -cp Name.jar package.MyOtherObject arg1

然後標識的主要方法Eclipse的運行配置可能是忽略。入口點在命令行中標識。在這種情況下,Eclipse在導出過程中需要運行配置的事實似乎會產生一件雜事,但似乎無法避免這種情況。

我更喜歡通過-cp選項運行我的.jar,因爲它使我可以訪問許多入口點。這樣,當我想訪問不同的入口點時,我不必重新導出。關於使用哪個入口點的決定被推遲到我想要運行的時間。出口時我不必決定。我保持靈活性。

我知道的另一種方式是隻具有一個arg1指定任務,這樣我就可以靠標識,有一個大的switch語句,然後始終與-jar選項調用Java的主要方法只是一個運行配置。

如果我使用-jar有很多運行配置的混亂。如果我使用-cp,在出口過程中似乎有一個令人討厭的步驟,其中涉及許多運行配置的混亂。有沒有辦法使用Eclipse來避免這兩個問題?

回答

0
  1. 打開項目,並選擇FileExportJavaJAR file。請勿選擇Runnable JAR file

  2. 默認情況下,項目文件夾中的每個文件都被複選爲要導出的資源,您可能需要取消選中部分或全部文件。不幸的是,Eclipse不記得這一點,所以你可能不得不在每次導出時都取消檢查資源。

  3. 複選框src目錄不幸顯示您想要導出源,但實際上您需要複選框才能導出相應的.class文件。

  4. 複選框Export generated class files and resources

  5. 瀏覽到要導出或覆蓋的目標JAR文件。

  6. 點擊finish

  7. Eclipse在上述步驟2中並不認爲第三方JAR文件是資源,因此您需要在調用Java時找到將它們提供給-classpath-cp的方法。我們需要這樣做的原因是,當Eclipse導出一個「JAR文件」時,它似乎沒有遵循第三方JAR文件的構建路徑。這是Eclipse在導出「Runnable JAR文件」時所具有的功能,但這不是我們在這裏所做的。您可以手動創建第三方JAR文件的目錄,並讓Java在-classpath中擴展通配符。

例Java調用在Linux中:

java -cp ~/directory/destination.jar:/home/username/directory/thirdparty/"*" com.domain.package.MyObject arg1 arg2 arg3

注意,在Linux上,我們可以讓bash的擴展~爲自己的JAR文件, 「destination.jar」。對於第三方JAR文件,使用長表格/home/username,因爲波浪號擴展可能不適用於字符串中間的冒號後面。

如果我們想要爲第三方JAR文件使用Java *通配符 - 與bash命令行通配符不同,則必須引用*字符以便通配符被傳遞給Java。

以這種方式導出無需選擇運行配置並解決引發問題的問題。

旁白:如果你自己的JAR導出到同一目錄中的第三方JAR文件的classpath然後簡單:

java -cp ~/singleDirectory/"*" com.domain.package.MyObject arg1 arg2 arg3