問題タブ [jawt]
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 - ネイティブ JNI/JAWT Swing アプリケーションは Java 6 では正常に実行されるが、Java 7 (64 ビット Windows 7 OS) では失敗する
私は自分が抱えている問題についてまともな感覚を持っていると思いますが、何が起こっているのかについて誰かがもっと洞察を持っているかどうか疑問に思っていました. これは、try-to-use-jawt-on-64-bit-windows-7-osに関連している可能性があります。
私はかなり単純な Java GUI アプリケーションを持っており、Windows HWND を取得して子をアタッチできるようにしようとしています。基本的に、ネイティブ コードで JAWT リソースを使用するたびにクラッシュすることに気付きました。私のコードで必ずしもクラッシュするわけではなく、JAWT コードにヒットする必要さえありません。jawt.dll/jawt.lib にリンクするだけで十分なようです。たとえばsun.java2d.loops.DrawGlyphListLCD.DrawGlyphListLCD(Lsun/java2d/SunGraphics2D;Lsun/java2d/SurfaceData;Lsun/font/GlyphList;)V+0
、Swing GUI がレンダリングされているときに、Java の fontmanager.dll のクラスで多数のクラッシュが発生するのを見てきました。ここで完全hs_err_pid9108.log
に利用可能:http: //pastebin.com/2QS0fDuf
興味深いメモ:
- JRE を Java 1.7.0_05 ではなく Java 1.6.0_33 に切り替えると、アプリケーションがクラッシュしなくなりました
- ネイティブ コードで JAWT へのすべての参照を削除すると、アプリケーションがクラッシュしなくなりました
- すべてのビジネス ロジックを削除し、ネイティブ コードで JAWT をインスタンス化するだけで、クラッシュします。
- コード内で実際にネイティブ呼び出しを行う必要さえありません。
jawt.lib
viaにリンクされた DLL をロードするSystem.load(...)
だけで十分です。GUI のレンダリング中にアプリケーションが引き続きクラッシュします (JRE 7 を使用)。
まだ失敗する例にできる限りコードを要約しました。Java クラスは次のとおりです。
JawtTestApp.h (ネイティブ ヘッダー)
JawtTestApp.cpp (ネイティブ実装)
JawtTestApp.h (Java ファイル)
コンパイルするときは JDK/include と JDK/include/win32 を、リンクするときは JDK/lib/jawt.lib を含める必要があることに注意してください。
私はまだプラットフォームや JDK などにまたがるテストに取り組んでいますが、この情報に基づいて、誰かアイデアはありますか? 私が見逃している魔法のコンパイラフラグはありますか? Java パッチはありますか? ここでアイデアが不足しています。
これが私のシステム情報です:
======================================
アップデート
これは、Swing コンポーネントを使用するだけの問題のようです。上記の例を AWT コンポーネントを使用するように変更すると (JFrame を Frame に切り替える)、アプリケーションは正常に実行されます。
java - MinGW64 を使用した JAWT アプリケーションが実行されない
JAWT/JNI アプリケーションを実行しようとしています。
Windows 7 x64 でjdk1.6.0_31 とMinGW64を使用しています。コンパイルはスムーズに進みますが、まだアプリケーションを実行できませんでした。機能を追加するまでは問題ありませんJAWT_GetAWT()
。
問題は、私が C/C++ プログラミング言語に慣れていないことです。
ネイティブ.java
生成された Native.h
Native.c
ここからのGCCコンパイルコマンドライン
アプリケーションが java.lang.UnsatisfiedLinkError を返す:
助けてください!
linux - Linux での libjawt.so GetComponent に関する情報
コンポーネントを返すために、libjawt.so の GetComponent メソッドの 2 番目の引数が正確に何を期待しているかを調べようとしています。誰かがこの方法のドキュメントを教えてくれれば非常に役に立ちます。
ありがとう
java - Canvas が非表示のときに AWT DrawingSurface を失う
AWT/Swing アプリケーション用の 3D レンダリング モジュールを作成しています。
優れた FPS を提供するために、Swing/AWT メソッドとグラフィックスを使用して描画することはできません。代わりに、Canvas 要素から Drawing Surface を取得し、それに直接レンダリングします。このようなもの:
初めて呼び出すときは正常に動作します。しかし、何らかの理由でキャンバスを非表示にした場合 (たとえば、ウィンドウを最小化したり、キャンバスの代わりに別のパネルを表示したり)、ds変数は同じままですが、その後は機能しません。基本的に、変数が表示されていて一番上にある場合にのみ変数を呼び出すことを確認したとしても、dsを使用した呼び出しは例外をスローします。たとえば、lock()関数が機能しなくなります。
なぜだろう?
また、ウィンドウを最小化してから再度最大化すると、基本的に新しい DS を取得しようとしましたが、これも機能しません。新しい DS アドレスは正常に返されますが、その新しいオブジェクトを使用できません。元のものを使用しないでください。
ここで私が見逃している愚かな何かがあるかもしれませんが、何がわかりません。これを整理するのを手伝ってください。ありがとうございました!