0

ここで役立つ 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 が別のローダーを使用している可能性がありますか?

実行中のjarファイルと同じディレクトリにあるファイルからHBaseに構成をロードさせるにはどうすればよいですか?

編集:

実行可能 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 に答える