0

我已经在这里找到了一些有用的问答,但问题仍然存在。我在我的 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 时,它​​不会读取我的配置

4

1 回答 1

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,包括路径中的文件夹),请告诉我。同时,我将坚持使用此解决方法。

于 2013-03-28T09:57:22.430 回答