当前位置: 首页 > 知识库问答 >
问题:

如何向eclipse类路径添加目录?

荆钱明
2023-03-14

我正在尝试运行一个由其他人创建的已经存在的eclipse项目。
在将其导入eclipse并尝试作为->Java应用程序运行之后,它失败了,因为它在bin/resources中找不到.properties文件

我打印出eclipse使用的类路径

logger.info(System.getProperty("java.class.path"));

果然,它包括bin和所有lib/*.jars,但不包括bin/resources。将.properties文件复制到bin中可以使程序正常工作,但我想了解如何将目录添加到eclipse类路径中。

我试了几件事,没有一件奏效

export CLASSPATH=$CLASSPATH:/home/me/programdir/bin/resources

这不起作用。我知道这不是一个理想的方法来解决这个问题,但是我认为它可以解决这个问题(我有更多的windows背景,而不是linux背景,所以我可能遗漏了linux系统变量的一些细微差别)

接下来,我尝试在Eclipse中的Run->Configurations对话框中修改VM参数

-classpath "/home/me/programdir/bin/resources"

接下来,我尝试直接修改build.xml。我找到了定义类路径的部分,并为bin/resources添加了自己的行,如下所示:

<path id="classpath">
    <fileset dir="./bin/resources" includes="**/*.properties"/>
    <fileset dir="./lib" includes="**/*.jar" /> 
</path>

这也是失败的。这让我更加困惑,所以我注释掉了整个path元素,而记录器打印出来的类路径没有改变,所以很明显eclipse使用的任何类路径都不是这个。在我看来,这是最好的解决方案,如果它起作用的话:可以用正确的添加项签入build.xml文件,以防止将来的用户遇到这个问题。

接下来,我尝试了IDE方法。运行->Configurations->Classpath->User Entries->Advanced并添加bin/resources文件夹。这工作很好,程序找到属性文件,一切都很好。然而,我不满的是,我之前的努力没有真正弄明白为什么而失败了。看来每一个都应该起作用了。

此外,我想确保我以这样一种方式修复这个问题,即它被我签入的代码捕获,以便后续用户不必经历相同的步骤。因此,我的解决方案不是很令人满意,因为我不确定实际的代码发生了什么变化,因此无法验证是否签入了‘修复’。

如何找到eclipse用于其类路径的实际定义?我原以为是build.xml类路径定义,但事实似乎并非如此。

共有1个答案

沈栋
2023-03-14

在Eclipse中,有一个构建类路径和一个运行时类路径。还有构建输出位置,默认情况下为bin。您不希望将资源直接添加到bin中,因为Eclipse可以在进行干净构建时删除其内容。您需要做的是在项目中添加一个resources文件夹,以包含您希望包含在构建输出中的任何非Java文件。

若要在生成输出(bin)中包含此resources文件夹的内容,请右键单击项目并选择“属性”。在Project Properties中,选择Java Build Path部分,然后选择Source选项卡。

使用添加文件夹...按钮选择项目中的resources文件夹,然后确定保存更改。此时,Eclipse将在构建时自动将resources中的所有内容复制到bin中。

 类似资料:
  • 问题内容: 如何在netbeans项目的类路径中添加文件夹(例如,包含arts的资源文件夹)?我设法通过编辑项目的NB生成的jar文件(即其MANIFEST.MF文件+手动复制资源)来手动完成此操作,但是应该有一种方法可以告诉netbeans并注意资源,不是吗? 文件夹结构如下所示: 我不想将艺术品包装到罐子里,因为我希望艺术品可以轻松更换。如果我将art文件夹添加到src文件夹,则NB可以正常编

  • 我目前正在Netbeans中使用sl4fj和log4j2编写一个小型的Maven Java应用程序。在生产环境中部署java属性时,我无法使用它。因此,我希望log4j2在我的项目中搜索并找到属性文件。我在谷歌上搜索了一下,并尝试了以下选项,但运气不佳; 更改了项目属性->Actions->Run project中的类路径,以包含xml文件 我还能尝试其他选择吗?它是一个maven项目,所以我不能

  • 我正在使用Java代理和Javassist向一些JDK类添加一些日志记录。实际上,当系统加载一些TLS类时,Javassist会向它们添加一些额外的字节码,以帮助我调试一些连接问题。 问题是,考虑到这个类包含在代理jar中: 在我的代理的转换方法中,假设我试图使用javassist调用该类: 你认为这行得通,但我得到了这个: 有没有办法将该类[]添加到应用程序的类路径中?

  • 问题内容: 我正在尝试向PYTHONPATH环境变量添加路径,该路径仅在特定的virtualenv环境中可见。 我在virtualenv命令提示符下进行了尝试,但这为整个环境设置了变量。 我该如何实现? 问题答案: 通常,您可以通过使用files来避免对PYTHONPATH做任何事情。只需在您的virtualenv的site- packages文件夹中放入一个扩展名为.pth的文件(任何基本名称均

  • 问题内容: 在开发Java项目时,我将所有jar文件都放在一个在项目内部创建的文件夹中,称为Now,是否可以将文件夹添加到Java类路径中,而不必添加每个jar文件? 我在考虑变量或创建用户库的思路。 问题答案: 根据您所说的,我可能会创建一个包含您的库JAR的用户库。 您可以使用Window => Preferences创建一个用户库,向下钻取到Java => Build Path => Use

  • 我希望title本身是描述性的,但要明确的是,我试图在greeting-service.jar中包含(即,error-handling-service.jar)。在构建之后,我在新项目(即TestApplication)中包含了greeting-service.jar,但在执行我得到的TestApplication时(顺便说一句,TestApplication不是一个gradle项目) BaseE