Java アプレットと rxtx ライブラリを介してシリアル通信を行っています。アプレットは正常に動作していますが、複数回ロードすると問題が発生します
UnsatisfiedLinkError: rxtxSerial.dll は既に別のクラスローダーにロードされています
Java JVM からライブラリ (DLL) をアンロードする方法に従って、dll をアンロードしようとしていますが、これがこの問題の解決に役立つと思われます。
私が理解したことから、rxtx クラスのカスタム クラス ローダーを使用して、ロードされた dll を含むすべてをある時点でガベージ コレクターにクリーンアップさせることができました。
したがって、次のコードが役立つはずです(シリアルポートとの通信を開始する機能にロードしようとしています)。
cl = new CustomClassLoader();
ca = cl.findClass("gnu.io.CommPortIdentifier");
a = ca.newInstance();
p = ca.getMethod("getPortIdentifier");
portId = (CommPortIdentifier) p.invoke(a, comportUsed);
残念ながら投げますClassNotFoundException
カスタム クラス ローダーに何か問題があると思いますが、何が問題なのかわかりません。
それまたは克服する方法を見つけるのを手伝ってくださいUnsatisfiedLinkError
。