带有git&的Eclipse资源文件夹行家

时间:2016-01-05 09:43:30

标签: java eclipse

我在Eclipse上有一个git / Maven(如果这与它有关)项目。我需要添加一个库文件夹,其中将存储我需要的一些文件。这是我项目的树形结构。

enter image description here

我尝试加载文件夹lib和lib2下的文件,但没有成功。我的一些尝试是

System.out.println("PATH"+this.getClass().getResource("lib").getPath());
System.setProperty("org.hyperic.sigar.path",this.getClass().getResource("lib2/file.xxx"));

他们都给我一个NullPointerException 我知道那里已经有很多答案了,我想我已经尝试了所有这些,大多数情况下,这只是没有用。

修改
在Kraal建议之后我改变了我的项目,现在它看起来像这样: enter image description here
但我仍然在

上得到NullPointerException
System.setProperty("org.hyperic.sigar.path",this.getClass().getResource("Sigar_lib/libsigar-amd64-linux.so").getPath());

2 个答案:

答案 0 :(得分:1)

这与git完全无关,而与你项目的结构无关。实际上它并不遵循Maven standard directory layout

  • 您的java类应该在src/main/java
  • 您的资源文件应为in src/main/resources

所以你有两个选择:

  • 更正您的设置,然后重试。
  • 在您的pom中配置Maven,以便在lib / lib2中查找资源。

在这两种情况下,您都可以在正确的位置查找资源。即file.xxx将位于file.xxx而不是src/main/resources/file.xxx(一旦您定义了资源目录,就可以在此目录中搜索资源)

根据您的评论,您应该阅读这篇解释how to use Maven within Eclipse的帖子。当您计划处理Maven项目时,在Eclipse中创建Maven project,而不是Java项目。

答案 1 :(得分:0)

该行:

System.setProperty("org.hyperic.sigar.path",this.getClass().getResource("Sigar_lib/libsigar-amd64-linux.so").getPath());

总是失败,因为当打包Jar时,目录“Sigar_lib”将位于类路径的根目录,因此将路径更改为:

"/Sigar_lib/libsigar-amd64-linux.so"

(领先斜线)。

但是这也会失败,因为无法从jar中加载本机库。您可以选择将文件放入外部目录或将其添加到jar的类路径中,并在加载时将它们解压缩到临时目录。

将库与Maven集成的最佳方法是将它们作为依赖项添加,请参阅here并删除“lib”,“lib2”文件夹。

在运行时,可以像这样访问文件:

System.out.println("PATH: " + System.class.getResource("/sigar-1.6.4/libsigar-amd64-linux.so").getPath());

<强>更新

pom.xml应该有这些行:

    <!-- SIGAR -->

    <!-- Java library -->
    <dependency>
        <groupId>org.fusesource</groupId>
        <artifactId>sigar</artifactId>
        <version>1.6.4</version>
    </dependency>
    <!-- Native libraries -->
    <dependency>
        <groupId>org.gridkit.lab</groupId>
        <artifactId>sigar-lib</artifactId>
        <version>1.6.4</version>
    </dependency>

</dependencies>