我已经在这里找到了一些有用的Q& A,但问题仍然存在。我在我的pom文件中使用以下插件:
<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 / main / resources中),还添加了Class-Path :.清单。但是在初始化hbase时,它无法找到与jar文件位于同一文件夹中的hbase-site.xml。
当我删除排除时一切正常,但我需要这些文件不在生成的jar中,使其可以为用户编辑。
因为这应该有效我想知道这是否是HBase的问题,也许HBase正在使用不同的Loader?
如何让HBase从与执行jar文件位于同一目录中的文件加载配置?
修改
我创建了可执行jar,当我用java -jar
运行它时,还将hbase-site.xml放入jar所在的同一文件夹中,初始化hbase时,它不会读取我的配置< / p>
答案 0 :(得分: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包括路径中的文件夹),请告诉我。与此同时,我将坚持这种解决方法。