jar 内のファイルの場所と、クラスパスをどのように指定するかによって異なります。残念ながら、あなたはあなたの構造などについて多くの情報を提供してくれませんでした。そのため、あなたのプロジェクトに適用できるこのサンプルを作成しました:
Test
パッケージにクラスがあるとしましょうtestapp
(クラスの完全な名前は前にありますtestapp.Test
):
package testapp;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Test {
private static final Logger logger = Logger.getLogger(Test.class.getName());
public static void main(String[] args) {
Properties properties = new Properties();
try {
properties.load(new FileInputStream("testapp/infor.properties"));
System.out.println("" + properties.getProperty("a"));
} catch (IOException e) {
logger.log(Level.SEVERE, "", e);
}
}
}
あなたはあるディレクトリ PROJECT_ROOT にいます。このディレクトリには、上記のコンパイル済みクラスがあります (クラスのフルネームは であるため、ディレクトリ testapp にありますtestapp.Test
)。構造は次のようになります。
PROJECT_ROOT
testapp
Test.class
infor.properties
クラスはすでにコンパイルされていることに注意してください (おそらく、その方法を正しく知っていますか?)。作業ディレクトリが PROJECT_ROOT の場合、次を実行できます。
jar -vcf myjar.jar *
という名前の jar が作成されmyjar.jar
ます。これで、次のコマンドを使用してjarファイルを実行できます
java -cp myjar.jar testapp.Test
-cp myjar.jar
これは、( を使用して) クラスパスが myjar.jar であることを単純に示しています (JVM は jar のようなディレクトリです)。
Test.java でわかるように、"testapp/infor.properties"
. 使用するクラスパスには、プロパティファイルへのパスを指定する必要があります。クラスパスは myjar.jar コンテンツのルートです。したがって、testapp/infor.properties.