9

システムプロパティを読み取るクラスローダーアプリケーションがありますsun.boot.class.path

しかし、JDK 9 のリリース ノートで、このプロパティが削除されていることがわかりました。

 System.getProperty("sun.boot.class.path"); // In JDK 9/10 this returns null 

しかし、JDK 10 でこのプロパティ値を取得したいのですが、どうすればよいですか?

次のような値を期待しています。

/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/resources.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jsse.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jce.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jfr.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/classes

ご参考までに:

-Xbootclasspathオプションは使いたくない。パス値だけが必要です。

4

1 に答える 1

-3

ブーツを削除します。それはそのように動作するはずです:

System.getProperty("java.class.path")

もっと理解するには:

System クラスには、システム プロパティの読み取りに使用される getProperty と getProperties の 2 つのメソッドがあります。

System クラスには、getProperty の 2 つの異なるバージョンがあります。どちらも、引数リストで指定されたプロパティの値を取得します。2 つの getProperty メソッドのうち単純なものは、1 つの引数 (プロパティ キー) を取ります。たとえば、path.separator の値を取得するには、次のステートメントを使用します。

System.getProperty("path.separator"); getProperty メソッドは、プロパティの値を含む文字列を返します。プロパティが存在しない場合、このバージョンの getProperty は null を返します。

もう 1 つのバージョンの getProperty では、2 つの String 引数が必要です。最初の引数は検索するキーで、2 番目の引数は、キーが見つからないか値がない場合に返されるデフォルト値です。たとえば、次の getProperty の呼び出しは、subliminal.message というシステム プロパティを検索します。これは有効なシステム プロパティではないため、このメソッドは null を返す代わりに、2 番目の引数として指定されたデフォルト値「StayPuft マシュマロを購入してください!」を返します。

System.getProperty("subliminal.message", "StayPuft マシュマロを購入!"); プロパティ値にアクセスするために System クラスによって提供される最後のメソッドは、Properties オブジェクトを返す getProperties メソッドです。このオブジェクトには、システム プロパティ定義の完全なセットが含まれています。

于 2018-05-21T15:18:44.147 に答える