【问题标题】:Eclipse run configuration annoyanceEclipse 运行配置烦恼
【发布时间】:2016-05-06 00:19:21
【问题描述】:

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

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

如果我按如下方式运行 jar

java -cp Name.jar package.MyObject arg1 arg2

java -cp Name.jar package.MyOtherObject arg1

那么标识主要方法的 Eclipse 运行配置可能会被忽略。入口点在命令行上标识。在这种情况下,Eclipse 在导出过程中需要运行配置这一事实似乎是一件苦差事,但似乎没有办法避免这种情况。

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

我知道另一种方法是只使用一个指定任务的arg1,因此我可以只依赖一个运行配置来标识具有大 switch 语句的主要方法,然后始终使用 @987654326 调用 Java @ 选项。

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

【问题讨论】:

    标签: eclipse jar


    【解决方案1】:
    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 在导出“可运行 JAR 文件”时具有的一项功能,但这不是我们在这里所做的。您可以手动创建第三方 JAR 文件的目录,并让 Java 在 -classpath 中扩展通配符。

    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 文件,* 字符必须按顺序引用(变为文字)用于将通配符传递给 Java。

    以这种方式导出无需选择运行配置并解决引发问题的问题。

    另外:如果您自己的 JAR 导出到与第三方 JAR 相同的目录,那么类路径会更简单:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      相关资源
      最近更新 更多