問題タブ [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.
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$1
、Runnable
それは実行時にのみ送信される ですExecutor
(静的な初期化の後に waaay)。
このような状況をどのようにデバッグしますか? すなわち:
- どうやって犯人を見つけますか?
- 犯人が見つかったらどうやって直すの?
PS。を追加する--initialize-at-run-time=java.net.InetAddress
と、別の方法で失敗します。
Java は自身を として報告しますbuild 25.252-b09-jvmci-20.1-b02, mixed mode
。
PPS。このクラスはイメージの実行時に初期化する必要があるため、イメージ ヒープで ... のインスタンスが許可されていないことがわかり、Quarkus の問題が修正されたようです。しかし、当面の問題を解決する方法はまだわかりません。どんな助けでも大歓迎です。
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