問題タブ [graalvm-native-image]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1121 参照

java - ネイティブ イメージをビルドするときに、「... のインスタンスはイメージ ヒープで許可されていません」をどのようにデバッグしますか?

Micronaut 2.0.0 を使用して RESTful API を実装する小さな Java アプリケーションがあります。内部では、Redisson 3.13.1 を使用して Redis にアクセスします。次に、Redisson は Netty (4.1.49) を使用します。

アプリケーションは、「クラシック」Java (HotSpot、Java 8 と 11 の両方) で正常に動作します。

GraalVM を使用して、このアプリケーションからネイティブ イメージを構築しようとしています。

コマンドはおおよそ次のようになります。

ここに私が得るものがあります:

これは出力の一部にすぎません。他の 3 つのエラーについても同様のレポートが生成されます。

私はまだ問題を理解するのに苦労していますが、ネイティブメソッドが含まれているため、ビルド時にjava.net.InetAddressそれもそのサブクラスも初期化できないと思います。java.net.Inet4Addressこれは、Inet4Addressビルド時 (Java 用語では初期化段階) に初期化されるコードに対して のインスタンスを表示できないことを意味します。そして、ネイティブの画像ビルダーは、そのようなオブジェクトが見えるようになる方法を見つけました。トレースも表示されますがClusterConnectionManager$1Runnableそれは実行時にのみ送信される ですExecutor(静的な初期化の後に waaay)。

このような状況をどのようにデバッグしますか? すなわち:

  1. どうやって犯人を見つけますか?
  2. 犯人が見つかったらどうやって直すの?

PS。を追加する--initialize-at-run-time=java.net.InetAddressと、別の方法で失敗します。

Java は自身を として報告しますbuild 25.252-b09-jvmci-20.1-b02, mixed mode

PPS。このクラスはイメージの実行時に初期化する必要があるため、イメージ ヒープで ... のインスタンスが許可されていないことがわかり、Quarkus の問題が修正されたようです。しかし、当面の問題を解決する方法はまだわかりません。どんな助けでも大歓迎です。

0 投票する
0 に答える
1259 参照

java - スプリング ブート postgresql を使用した GraalVM ネイティブ イメージがビルドされない

現在、GraalVM ネイティブ イメージ ツールを試しています。目標は、postgresql でスプリング ブート Web アプリケーションを実行することです。

私のプロジェクトは mvn clean パッケージでコンパイルされ、.JAR は docker-postgresql で魅力的に動作しますが、これからネイティブ イメージを構築することはできません。

Josh Long の Spring のヒントからこのきちんとしたコンパイル スクリプトを見つけました。これは、以前のプロジェクトの構成に大いに役立ちました。これまでのところ、StringIndexOutOfBoundsException をスローするだけなので、ネイティブ イメージがビルドされない理由がわかりません。h2とjpaを使用した別のプロジェクトがあり、まったく同じパラメーターでそれを行います。

構成またはエクスペリエンスと ofc ソリューションを変更する場所に関するいくつかの提案を期待しています。

現在、GraalVM バージョン 20.1.0 (Java バージョン 1.8.0_252) を JDK として使用しています。

以下は、スタックトレースとサンプル プロジェクトです。また、./compile.sh のターミナル出力をhttps://file.io/HXudRpH80dDzにアップロードしました。

コンパイル.sh

pom.xml

アプリケーションのプロパティ

PostgresApplication.java

従業員.java

EmployeeRowMapper.java

EmployeeDao.java

EmployeeDaoImpl.java

EmployeeService.java

EmployeeServiceImpl.java

ApplicationController.java