【问题标题】:Eclipse: Get the project name as a VM argument?Eclipse:获取项目名称作为 VM 参数?
【发布时间】:2012-05-12 00:02:24
【问题描述】:

考虑一个配置类,它需要为每个 Eclipse 项目解析不同的配置文件。

例如,如果Configuration类是从Project1调用的,它应该解析special/path/fileX,如果它是从Project2调用的,它应该解析special/path/fileY

我试过using Eclipse's {project_name},但令人惊讶的是它被解析为光标突出显示的项目,而不是当前类的父项目。

任何想法如何在 Eclipse Runtime 中区分一个项目与另一个项目,最好使用 JVM 参数?

【问题讨论】:

  • 为什么不将文件路径/名称作为参数从调用传递给配置类?
  • 我不明白这个问题,这段代码在哪里运行?在 IDE 中,或者它是一个 RCP 应用程序,还是其他什么?
  • 我想要一个单点选择。 Configuration 类是从项目中的许多类中调用的 - 我希望能够一次更改整个项目的文件。
  • @FrancisUpton 代码正在 IDE 中运行。当它在生产中时,有一个特殊的 VM arg 告诉 Configuration 类文件的确切路径。
  • 要考虑的一件事是在调用类中查找调用堆栈,也许您可​​以从中做出决定。这很容易做到(new Exception().printStackTrace() 或使用堆栈跟踪元素)。

标签: java eclipse configuration jvm-arguments


【解决方案1】:

这是您描述的问题的解决方法,但我想这是一个更好的解决方案,因为它独立于 Eclipse 并且也可以轻松地在生产环境中工作。

只需从类路径加载相同的文件,无论您从哪个项目开始:

/my/file/from/classpath.txt

但仅将此文件放在 Project1 / Project2 中,以便根据您的设置,各个文件相互排斥:

/Project1/src/my/file/from/classpath.txt
/Project2/src/my/file/from/classpath.txt

src 是 Java 源文件夹。现在您仍然可以使用您的 JVM 参数来覆盖它,或者如果缺少上述内容,则提供默认值。

【讨论】:

    【解决方案2】:

    我认为最简单的方法是使用 eclipse 的运行配置。只需根据需要创建任意数量的配置,提供所需的所有 JVM 参数,然后使用它们来启动。这也将非常接近您将在生产模式下执行的操作

    【讨论】:

    • 谢谢。问题是用户需要为每个JUnit定义不同的运行配置,比较麻烦。
    【解决方案3】:

    或者您可以转到 Eclipse 的已安装 JRE 并将配置设置为 JVMArgs,就像您在 prod 中所做的那样。

    如果需要,您可以为每个环境提供 JRE 的差异副本。

    此外,如果从 IDE 运行,您可以获得 System.getProperty("user.dir") 这应该是项目的根目录。

    该系统属性可用于跟踪被调用者。更好的是,将 Installed JRE 的 JVM Args 设置为类似这样

    -Dtheflaginprod=${project_loc}
    
    project_loc = absolute path of the the project (/usr/projects/project1)
    project_path = project name relative to the workspace  (/project1)
    

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多