2013-03-27 41 views
0

我已经发现了一些有用的Q & A,但问题仍然存在。我使用以下插件在我的POM文件:组装的jar将不会在同一个文件夹中找到hbase-site.xml

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.4</version> 
       <configuration> 
       <excludes> 
        <exclude>hbase-site.xml</exclude> 
        <exclude>log4j.properties</exclude> 
       </excludes> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.4</version> 
      <configuration> 
       <finalName>myfinalname</finalName> 
       <appendAssemblyId>false</appendAssemblyId> 
       <archive> 
        <manifest><mainClass>com.company.MainClass</mainClass> 
        </manifest> 
        <manifestEntries> 
         <Class-Path>.</Class-Path> 
        </manifestEntries> 
       </archive> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
      </configuration> 
      <executions> 
       <execution> 
        <id>make-assembly</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

,你可以看到,我排除的属性文件(即放在src /主/资源),并且还添加了类路径:到清单。但是,当初始化hbase时,它找不到与jar文件位于同一文件夹中的hbase-site.xml。

当我删除不包括一切正常,但我需要的文件不在生成的jar中,使他们可编辑的用户。

因为这应该工作,我想知道如果这是HBase的问题,也许HBase使用不同的装载机?

如何让HBase从位于与执行jar文件相同的目录中的文件加载配置?

编辑:

我创建可执行的JAR,当我与java -jar运行它,也把HBase的-site.xml中到同一文件夹中的jar所在,HBase的初始化的时候,这不是” t阅读我的配置

+0

能否请您进一步解释'初始化hbase时无法找到我的hbase-site.xml“。它是通过使用'mvn ...'还是'java -jar my_aritifact.jar'或其他来完成的? – 2013-03-28 00:46:38

+0

我更新了问题。我用java -jar启动它,并且位于与jar相同的文件夹中的hbase-site不被读取。 – divadpoc 2013-03-28 08:20:59

回答

0

我发现了以下解决方法。使用以下脚本启动jar

java -cp .:/path/to/myapp.jar com.company.MainClass 

使其读取位于同一文件夹中的hbase-site.xml。 (这是基于提供了这里这个问题的答案:How to include hbase-site.xml in the classpath),但我更喜欢使用默认

java -jar myapp.jar 

命令。如果你知道如何做到这一点(使Maven组装的jar包含路径中的文件夹),请告诉我。在此期间,我会坚持这个解决方法。

相关问题