我已经在这里找到了一些有用的问答,但问题仍然存在。我在我的 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 正在使用不同的加载器?
如何让 HBase 从与执行 jar 文件位于同一目录的文件中加载配置?
编辑:
我创建了可执行 jar,当我使用 运行它时java -jar
,还将 hbase-site.xml 放入与 jar 所在的文件夹相同的文件夹中,初始化 hbase 时,它不会读取我的配置