問題タブ [urlclassloader]
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.
android - 外部コード/アプリケーションを実行しているAndroidアプリケーション?
Webからデータ(おそらく.apkまたは.jar)をフェッチし、そこから「何か」を起動できるAndroidアプリケーションが必要です。
それが「些細な」クラスであれば、まったく問題はありません。これは私のローダーです
問題は、実行したいコードがアプリケーションに非常によく似ていることです。アプリケーションには、「単純な」ビューと何らかの相互作用が必要です。
ダウンロードしたクラスの「onCreate」メソッドを呼び出すことができません。
私は3つの通りがあると思います:
- アプリケーションをサイレントインストールして実行する方法を探しています(可能ですか?)。
- あなたの助けを借りて、私は自分のアプリケーション内で2番目の「アプリケーション」を初期化する方法を理解しています(独自のRとすべてのものを使用)。
- Webからデータをフェッチし、ページを動的に構築するマスタープログラムを作成します。
だから、私は間違いなくあなたの助けが必要です!
java - インターフェイスへのクラスのロード
現在取り組んでいるプラットフォーム (JDK 1.3、BD-J) にはかなり制限があります。私が使用したい 1 つの JAR ファイルは、ロード時に自己整合性チェックを実行しようとし、失敗すると操作不能状態になります。なぜこれが起こっているのかを突き止めるのは非常に困難ですが、ほとんどの情報源は、BD-J 構造を介して自分自身を見つけたりアクセスしたりできないため、死ぬことを指摘しています。
これは、ロード時にそれを使用することを除外し、代わりにアプリケーション自体にロードします。これは非常に大きなライブラリなので、ロードされたオブジェクトをそれにキャストして潜在的に使用できるように、かなりの量のインターフェイスを作成する必要があります。ここに私の問題があります。
インターフェースは通常のロード時にロードされ、ライブラリは実行時にロードされ、以前にロードされたインターフェースにキャストされますが、これは問題ですか? ClassCastException を受け取っています
できる限りライブラリのパブリック メソッドに基づいてインターフェイスを作成しましたが、インターフェイスにキャストしようとすると、ClassCastException が発生します。注: すべて正常にロードされ、コンストラクターにアクセスしてメソッド名を読み取ることができます。使用可能にするためにキャストすると、失敗します。
私のプロジェクトとツールキットのインターフェイス パッケージは異なりますが、これは問題ですか?
アイデアが不足しています。見落としているものはありますか?
ありがとう。
java - Javaセキュリティ:URLClassLoaderを介してロードされたサンドボックスプラグイン
質問の概要:以下のコードを変更して、信頼できない動的にロードされたコードがセキュリティサンドボックスで実行され、アプリケーションの残りの部分が制限されないようにするにはどうすればよいですか?なぜURLClassLoaderはそれが言うようにそれを処理しないのですか?
編集:AniBに応答するように更新されました。
編集2:更新されたPluginSecurityManagerを追加しました。
私のアプリケーションにはプラグインメカニズムがあり、サードパーティが特定のインターフェイスを実装するクラスを含むJARを提供できます。URLClassLoaderを使用して、そのクラスをロードしてインスタンス化することができます。問題ありません。コードは信頼できない可能性があるため、誤動作を防ぐ必要があります。たとえば、プラグインコードを別のスレッドで実行して、無限ループに入ったり、時間がかかりすぎたりした場合にプラグインコードを強制終了できるようにします。しかし、ネットワーク接続を確立したり、ハードドライブ上のファイルにアクセスしたりできないように、セキュリティサンドボックスを設定しようとすると、私は前向きになります。私の努力は常にプラグインに影響を与えない(アプリケーションと同じ権限を持っている)か、アプリケーションを制限することになります。メインのアプリケーションコードで、必要なことをほぼすべて実行できるようにしたいのですが、
このテーマに関するドキュメントとオンラインリソースは複雑で、混乱を招き、矛盾しています。カスタムSecurityManagerを提供する必要があることをさまざまな場所(この質問など)で読みましたが、JVMがJARのクラスを遅延ロードするため、試してみると問題が発生します。したがって、問題なくインスタンス化できますが、同じJARから別のクラスをインスタンス化するロードされたオブジェクトのメソッドを呼び出すと、JARから読み取る権利が拒否されたために爆発します。
理論的には、SecurityManagerのFilePermissionをチェックして、独自のJARからロードしようとしているかどうかを確認できます。それは問題ありませんが、URLClassLoaderのドキュメントには、「ロードされるクラスには、デフォルトで、URLClassLoaderの作成時に指定されたURLにアクセスするためのアクセス許可のみが付与されます」と記載されています。では、なぜカスタムSecurityManagerが必要なのですか?URLClassLoaderはこれを処理するだけではいけませんか?なんでそうじゃないの?
問題を再現する簡単な例を次に示します。
メインアプリケーション(信頼できる)
PluginTest.java
Plugin.java
PluginSecurityManager.java
PluginThread.java
プラグインJAR(信頼できない)
MyPlugin.java
更新: プラグインコードが実行される直前に、プラグインセキュリティマネージャーに通知して、使用しているクラスソースを認識できるように変更しました。次に、そのクラスのソースパスの下にあるファイルへのファイルアクセスのみを許可します。これには、アプリケーションの開始時にセキュリティマネージャを一度設定するだけで、プラグインコードを入力および終了するときにセキュリティマネージャを更新できるという優れた利点もあります。
これで問題はほぼ解決しますが、他の質問には答えられません。URLClassLoaderが、言われているようにこれを処理しないのはなぜですか。誰かがその質問に対する答えを持っているかどうかを確認するために、この質問をしばらく開いたままにしておきます。もしそうなら、その人は受け入れられた答えを得るでしょう。それ以外の場合は、URLClassLoaderのドキュメントがあり、カスタムSecurityManagerを作成するための彼のアドバイスが正しいことを前提として、AniBに授与します。
PluginThreadは、クラスファイルへのパスであるPluginSecurityManagerのclassSourceプロパティを設定する必要があります。PluginSecurityManagerは次のようになります。
java - 実行時にライブラリをロードすることは可能ですか?
クラスパス上にない場合、実行時にJavaライブラリ(.jarファイル)をロードする方法はありますか?
java - Java UrlClassLoader: findResources は null を返しますが、loadClass はクラスを返します
UrlClassLoader のデフォルトの子として作成し、すべての jar ファイルを追加しました
次に、ローダーからいくつかのクラスを取得しようとしています:
クラスを正常に返します。
パッケージごとにすべてのクラスを見つけようとすると:
空の列挙を返します。なんで?
java - カスタムアプリケーションのプラグインをクラスロードすると、NoClassDefFoundErrorが生成されます
クラスローディングの概念に頭を悩ませている問題があります。プログラミングを始めてしばらく経ちましたが、クラスローディングがどのように機能するかについては比較的よく知っています。いくつかの例を見て、詳細を読みました。クラスローディングとクラス自体の背後にありますが、ある程度は理解していますが、私を逃れ、検索しやすい用語に入れるのはかなり難しいように思われる概念があります。
基本的に、私はMinecraft用に開発しているゲームモード用の「ギルド」を作成しようとしています。これらのギルドは独自のクラスにあり、起動時またはメソッド「reloadGuildFiles()」が発行されるたびにゲームに読み込まれます。これらのクラスを開発するには、最初にメインアプリケーションをエクスポートし、作成中のギルドのクラスパスとメインアプリケーションの依存関係に追加します。
これが「reloadGuildFiles」メソッドです。
これがメインアプリケーションに含まれるGuildクラスです。
これが私がクラスロードしようとしているクラスです
これが私に与えているエラーです:
私が収集できることと私が理解していることから、メインアプリケーションがロードされるクラスのビルドパス上にある場合でも、クラスローダーはクラスギルドを認識しません。クラスローダーにメインアプリケーションに含まれているGuildクラスを認識させる必要があると思いますが、これを行う方法はありますか、それとも明らかに間違っていることがありますか?
eclipse - classes.jar の URLClassLoader での ClassNotFoundException (java.net パッケージ)
Eclipse Galileo で、Debug As/Web Application を実行すると、次の ClassNotFoundException が発生しました。ただし、Run As/Web Application を実行すると問題なく動作します。
「ソースの添付ファイルには、ファイル URLClassLoader.class のソースが含まれていません。下の [添付ソースの変更] をクリックして、ソースの添付ファイルを変更できます。」というメッセージが表示されました。
プロジェクト ウィンドウでは、URLClassLoader クラスは /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/classes.jar にある Java.net パッケージにあるようです。
マシンで jar を見つけました。他に何がありませんか? なぜデバッグのみの問題なのですか?
iMac 10.6.5 マシンにある JRE システム ライブラリが古い可能性はありますか? または、どういうわけか、いくつかのjar/パッケージのインストール/アンインストールが問題を引き起こしましたか?
これは私が持っているものです - JRE System Library [JVM 1.6.0 (MacOS X Default)] - 問題の修正に役立つアップデートはありますか? しかし、それを更新するにはどうすればよいですか?
助けてください!
java - java urlclassloader の使用法.まれなケースでのみ必要ですか?
を使用しURLClassLoader
て、指定されたパスの特定の jar からクラスをロードするのはどのような場合ですか?
例えば
customClasses.jar のクラスを使用したい場合、この jar を CLASSPATH からアクセス可能なパスに配置すれば十分だと常に考えていました。
次に、私のコードでapackage.MyCustomClass
.
私はここで何かが誤解されているか欠けていると思うので、誰かが説明して、この方法でクラスをロードする上記のスニペットが役立つ場合の例を教えてください。
ありがとう!
eclipse-plugin - ISelection -- ナビゲーターで選択したクラスの ClassLoader を取得するにはどうすればよいですか
Eclipse プラグイン開発は初めてで、ナビゲーターで選択されたクラスをロードする必要があるプラグインを開発しようとしています。
私のプラグインを使用しているEclipseワークベンチにクラスをロードするために、クラスをロードする方法、またはEclipseプラグインからクラスローダーを作成する方法を教えてください。
前もって感謝します。
よろしくギラーニ
java - URLClassLoader が機能しない
F:/badge-dao/bin/com/badge/dao/impl/ディレクトリにBadgeDaoImplという名前のファイルをロードしたいと考えています。次のコードを書いてテストしています。
ディレクトリまたはクラス名を変更すると、例外がスローされます。次のコードは動作するはずですが、classNotFoundException をスローするのではなく、停止して EventTable の finally ブロックに制御を移します。
どこが間違っているのか教えてください。