私は書いているアプリケーションのための一種のブートストラップに取り組んできました。これは、Webサイトからアプリケーションをバッファして実行します。私はアプリケーションのメインクラスのメインメソッドと呼ばれる点までは非常にうまく動作します。ライブラリのストリーミングも必要です。 LIBとアプリケーションは同じクラスローダーにありますが、不十分なリンクのためにライブラリを見つけることができなかったと言われています。私は助けを求めたが、何も見つけることができなかった。MemoryClassLoaderからライブラリをロードしますか?
答えて
がRuntime.loadLibrary
であるため、native
メソッドをサポートするネイティブコードを取得していないと思われます。このようなライブラリは、ローカルのファイルシステム上にある必要があり、クラスローダから独立しています。 Javadoc:
public void loadLibrary(String libname)
は、指定されたライブラリ名を持つダイナミックライブラリをロードします。ネイティブコードを含むファイルは、ローカルファイルシステムからライブラリファイルが通常取得される場所からロードされたです。 このプロセスの詳細は、実装に依存しますです。ライブラリ名から特定のファイル名へのマッピングは、システム固有の方法で行われます。
そして明らかに、Runtime.getRuntime()
は、特定のクラスローダから独立しています。
ネイティブコードがネイティブコードのネットワーク負荷を引き起こす可能性がある場合、ネイティブコードはSecurityManager
の方法で制限できないため、巨大なremote code execution vulnerabilityになります。
アプリケーションを生成するWebサイトを信頼し、安全なチャネル(MITMと改ざんを防ぐために暗号化されています)で取得している場合、ライブラリをフェッチしてローカルファイルシステムにダンプし、クラスを初期化する前に、ネイティブライブラリをロードするためにRuntime.loadLibrary
or System.loadLibrary
を呼び出してください。
アプリケーションを作成するWebサイトの作成者を信頼しない場合、またはそのWebサイトがサードパーティのコンテンツをホストする場合は、システムライブラリをはるかに少なくしてJARをロードしないでください。
ウェブサイトの著者が信頼できるものであっても、審査もテストもしていないシステムライブラリやその他のネイティブコードを読み込むことは危険です。 chroot
によるプロセスサンドボックス処理とシステムコールの代行受信は、このリスクをいくらか緩和するのに役立ちますが、注意が必要です。
私のドメインからライブラリjarをロードしようとしていますこれらは必ずしもシステムライブラリではありません。 – Roby718
@RomanHargrave、['UnsatisfiedLinkError'](http://docs.oracle.com/javase/7/docs/api/java/lang/UnsatisfiedLinkError.html)を取得している場合は、システムライブラリです。あなたはそれを取得していますか、それとも 'LinkageError'の別の種類ですか? –
問題は大したものではないようです。私はちょうどその問題が、LWJGLがスローするのが好きなエラーメッセージと関係していることに気づいた。私はあなたにそれに戻ってきます! – Roby718
- 1. コードイグナイターライブラリ内からライブラリをロードしますか?
- 2. Java MemoryClassLoader(IllegalArgumentException)
- 3. knockout.js javascriptライブラリからウィジェットをロードする
- 4. Prolog-ファイルからライブラリをロードする
- 5. メモリから動的ライブラリをロードする
- 6. メモリストリームからライブラリをロードできますか?
- 7. JNIを使用して別のJNIライブラリをロードしますか?
- 8. Glideを使用してMaterialDrawer AndroidライブラリのURLからアイコンをロード
- 9. 静的ライブラリを介してカスタムバンドルからXIBをロード
- 10. ViewBagからファイルをロードしますか?
- 11. webpackでnpmなしの外部libフォルダからライブラリをロード
- 12. pythonpathからライブラリを削除します
- 13. CLI C++アプリケーションからライブラリ内にC#WPFフォームをロードする
- 14. ベンダーフォルダsymfonyからライブラリをロードするには?
- 15. ライブラリ内のアプリケーションからのリソースファイルをandroidにロードする
- 16. パッケージ内のpackratライブラリから依存関係をロードする
- 17. アニメーションGIFを写真ライブラリからロードする方法
- 18. gifAnimationライブラリで処理中のURLからgifをロードする
- 19. Common Lispでライブラリをロードするにはどうしたらいいですか?
- 20. AS2を使用してライブラリからローダーコンポーネントにイメージをロードする方法は?
- 21. ANTでjarライブラリからjava premain-classをロード
- 22. Jenkins Job DSL - git repoからgroovyライブラリをロード
- 23. C++プログラムを共有ライブラリにコンパイルし、Cプログラムからロードするには?
- 24. Qtを共有ライブラリとしてロードすると正しく閉じますか?
- 25. CoInitializeが呼び出されていません - (ライブラリなしでDirectXTKからgamepad.hをロードしています)
- 26. リモートマシンからAssembly.Loadを使用してgacからdllをロードしますか?
- 27. ライブラリ/キャッシュからのビューへのビデオのロード
- 28. HTMLスクリプトsrc - Jqueryライブラリがファイルからロードされない
- 29. LLDBが共有ライブラリからデバッグシンボルをロードしたかどうかを確認する方法? Linuxの
- 30. アプリケーションのリッスンをライブラリ/フレームワークから終了しますか?
あなたが正確なエラーメッセージとローダーコードのいくつかを提供しない限り、間違っているのは 'MemmoryClassLoader'のダブル' m'です... – thkala