Eclipse运行配置烦恼

时间:2016-05-03 21:29:31

标签: eclipse jar

如果我按如下方式运行jar java -jar Name.jar arg1 arg2 arg3 可以理解的是,在导出(创建.jar)时,我必须指定Eclipse运行配置以识别main方法,因为可能有与主类一样多的主方法。

如果我从Eclipse中运行一个主程序,它会静默地创建一个新的运行配置,这会在我想要导出时为运行配置选项增加更多的混乱。如果我为很多类执行此操作,则很可能我有许多基本相同的运行配置,唯一的区别是指定的主要方法。

如果我按如下方式运行jar

java -cp Name.jar package.MyObject arg1 arg2

java -cp Name.jar package.MyOtherObject arg1

然后可能会忽略标识main方法的Eclipse运行配置。入口点在命令行中标识。在这种情况下,Eclipse在导出过程中需要运行配置,这似乎创造了一件苦差事,但似乎没有办法避免这种情况。

我更喜欢通过-cp选项运行我的.jar,因为它可以让我访问许多入口点。这样,当我想访问不同的入口点时,我不必重新导出。关于使用哪个入口点的决定被推迟到我想要运行的时间。我不必决定何时出口。我保持灵活性。

我知道另一种方法是只有一个arg1来指定任务,所以我只能依靠一个运行配置来识别具有大型switch语句的main方法,然后始终使用-jar选项。

如果我使用-jar,则存在许多运行配置的混乱。如果我使用-cp,那么导出过程中似乎会出现一个令人讨厌的步骤,其中涉及许多运行配置的混乱。有没有办法使用Eclipse来避免这两个问题?

1 个答案:

答案 0 :(得分:0)

  1. 打开项目并选择FileExport以及JavaJAR file。不要选择Runnable JAR file

  2. 默认情况下,项目文件夹中的每个文件都被复选框作为要导出的资源,您可能想要取消选中其中的部分或全部文件。遗憾的是Eclipse不记得这一点,所以每次导出时都可能需要取消资源检查。

  3. 复选src目录,遗憾的是它显示您要导出源,但实际上您需要复选它才能导出相应的.class文件。

  4. 复选框Export generated class files and resources

  5. 浏览到要导出或覆盖的目标JAR文件。

  6. 点击finish

  7. Eclipse不会将第三方JAR文件视为上述步骤2中的资源,因此您需要找到一种方法在调用Java时将它们提供给-classpath-cp 。我们需要这样做的原因是因为Eclipse导出了一个" JAR文件"它似乎没有遵循第三方JAR文件的构建路径。这是Eclipse在导出" Runnable JAR文件时所具有的功能。但那不是我们在这里做的。您可以手动创建第三方JAR文件的目录,并让Java在-classpath中展开通配符。

  8. linux中的Java调用示例:

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

    请注意,在linux上我们可以允许bash扩展您自己的JAR文件的~," destination.jar"。对于第三方JAR文件,使用长格式/home/username,因为波浪线扩展可能无法在字符串的中间工作,就在冒号之后。

    如果我们想要使用Java *通配符 - 与bash命令行通配符不同 - 对于第三方JAR文件,必须引用*字符(make文字)以便将通配符传递给Java。

    以这种方式导出消除了选择运行配置的需要,并解决了提示问题的问题。

    除此之外:如果您自己的JAR导出到与第三方JAR相同的目录,则类路径更简单:

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