mvn exec:java失败,出现FileNotFoundException

mvn exec:java失败,出现FileNotFoundException,java,maven,exec,Java,Maven,Exec,我有一个maven项目,有两个模块。有一个爬虫模块,它依赖于核心模块。每个模块在src/main/resources/中都有自己的config.ini文件,每个模块有一个主类 现在我想像这样启动新闻爬虫程序: mvn exec:java -Dexec.mainClass="org.aksw.simba.rdflivenews.NewsCrawler" 这可用于加载爬虫自己的配置文件,但无法从核心模块加载配置文件: NewsCrawler.CONFIG = new Config(new Ini(

我有一个maven项目,有两个模块。有一个爬虫模块,它依赖于核心模块。每个模块在src/main/resources/中都有自己的config.ini文件,每个模块有一个主类

现在我想像这样启动新闻爬虫程序:

mvn exec:java -Dexec.mainClass="org.aksw.simba.rdflivenews.NewsCrawler"
这可用于加载爬虫自己的配置文件,但无法从核心模块加载配置文件:

NewsCrawler.CONFIG = new Config(new Ini(File.class.getResourceAsStream("/newscrawler-config.ini")));
RdfLiveNews.CONFIG = new Config(new Ini(File.class.getResourceAsStream("/rdflivenews-config.ini")));
第二次配置加载失败,出现NullPointerException。我检查了jar文件,配置文件在里面。奇怪的是,相同的两行在测试用例中工作。同样,使用eclipse,我可以毫无问题地启动类的main

dezip,然后在命令行上,转到包含父pom的目录,然后执行以下操作:

mvn clean test
调用getResourceAsStream()时,执行类似操作以了解您的位置:

另外,请尝试在
新闻爬虫配置ini
之前删除
/
。这取决于您在层次结构中放置文件的位置
getResourceAsStream
搜索类路径,而不是源路径

您也可以使用
this.getClass().getResourceAsStream()
而不是
File.class.getResourceAsStream()

通过在pom.xml中配置资源,可以将src/main/resource复制到目标/测试类:

<build>
  <resources>
    <resource>
      <filtering>false</filtering>
      <directory>${basedir}/src/main/resource</directory>
    </resource>
  </resources>
  <testResources>
    <testResource>
      <filtering>false</filtering>
      <directory>${basedir}/src/main/resource</directory>
    </testResource>
  </testResources>
</build>

这解决了我的问题!我想我找错了方向


System.out.println(“未找到资源文件:“+file.class.getResource(“.”)”;->未找到资源文件:nullI已添加一个指向zip的链接,其中包含您案例的函数示例的源代码。希望这有帮助。
<build>
  <resources>
    <resource>
      <filtering>false</filtering>
      <directory>${basedir}/src/main/resource</directory>
    </resource>
  </resources>
  <testResources>
    <testResource>
      <filtering>false</filtering>
      <directory>${basedir}/src/main/resource</directory>
    </testResource>
  </testResources>
</build>
this.class.getResourceAsStream("/com/jeromeradix/stackoverflow/newscrawler/newscrawler-config.ini"));
NewsCrawler.CONFIG = new Config(new Ini(NewsCrawler.class.getResourceAsStream("/newscrawler-config.ini")));
RdfLiveNews.CONFIG = new Config(new Ini(RdfLiveNews.class.getResourceAsStream("/rdflivenews-config.ini")));