問題タブ [codebase]
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 - Java RMI コードベースが機能しない
私の知る限り、クライアントに設定した RMI のコードベースはサーバーに渡されます。次に、サーバーはこのコードベースを使用して、サーバーのクラスパスにないクラスを見つけます。
必要なすべてのクラスがサーバーのクラスパスで利用可能である限り、リモート メソッドの呼び出しは正常に機能します。次に、必要なクラスをサーバーのクラスパスから削除しようとしましたが、代わりに、RMI クライアントの起動時に codebase プロパティで必要なクラスの新しい場所を指定しました。残念ながら、これにより ClassNotFoundException: java.lang.ClassNotFoundException: client.Pi が返されます。
スタックトレース:
サーバーの起動:
クライアントの開始:
クライアントのクラスパス (c:\temp) 内には、クライアントも必要とする必要な client.Pi クラスがあります。このクラスがどこにあるかをサーバーに伝えるために、別のフォルダーにコピーを置き、このフォルダーを codebase プロパティで指定しました。そのクラスの正確な場所は C:/Users/samue_000/public_html/classes/client/Pi.class です。そのすべてが同じ物理マシン (VM なし) で実行されています。したがって、サーバーがクライアントからコードベースを取得せず、必要な client.Pi クラスをロードしない理由がわかりません。
この投稿を埋めすぎないように、投稿する情報を必要な部分に最小限に抑えようとしました。この問題を解決するためにさらに情報が必要な場合は、お知らせください。それは私を夢中にさせています。私はこの問題に何時間も何日も取り組んでいます...
編集:この記事で説明されているものとほぼ同じコードを使用しました。唯一の違いは、レジストリを個別に開始するのではなく、プログラムで rmi レジストリを作成することです。したがって、コード自体に問題はないはずです。Pi クラスがサーバーのクラスパスにある限り、問題なく動作します。しかし、Pi クラスがクライアントのコードベースとクラスパス内にのみ存在するとすぐに、それは機能しなくなります。
git - ライブ サイトへの Git コードベース リポジトリ
それで、私のローカルホストにウェブサイトを作成しました。そして、コードベースにプッシュして、ライブにプッシュしたいのですが、どうすればいいですか?
ここに私の注文があります:
ありがとう!
android - IntelliJ IDEA を使用して、アプリの無料/有料バージョン用に 1 つのコードベースを維持する
私のAndroidアプリの無料版と有料版を実装するには、いくつかの洞察/提案/ポインター(できるだけ詳細)が必要です. SVN での開発には IntelliJ IDEA を使用します。
私の目的は、「useAds」や「useFeatureX」などの単純なブール値によって広告または有料機能を実装する 1 つのコード ベースを維持することです。あとはパッケージとアプリ名を変えるだけ(?)
プロジェクトをライブラリに変換することに関する古い投稿や、Gradle フレーバーについて話している他の新しい参考文献を見てきました (Gradle を使用したことはありません)。前者は複雑なようで、私が探していることができるかどうか、私が読んだことからはよくわかりません。後者はそのように聞こえますが、おそらくGradleに慣れていないため、実際よりも困難に思えます。
他の方法はありますか?上記のいずれかが進むべき道ですか?セキュリティはどうですか?無料版の最終的な apk から未使用のコード/クラスを取り除くと思う Proguard を使用していますか?
ありがとう、無知でごめんなさい。
java - サーバーでの RMI UnmarshalException
http://www.ejbtutorial.com/java-rmi/a-step-by-step-implementation-tutorial-for-java-rmi on Eclipse (Windows 7 x64)のチュートリアルを複製しようとしました。
コードをコピーしただけなので、すべてが正しく行われていれば、動作するはずです。
rmicまたはstart rmiregistryが各フォルダーで機能しなかったため、パス変数を変更する必要がありました。今、私のパス変数は次のようになっています:
先頭に「C:\Program Files\Java\jdk1.7.0_25\bin」を追加しました。cmd を開いてrmiregistry を開始すると、正常に動作します。
問題は、cmd で rmiregistry を開始した後、Eclipse でサーバーを実行しようとすると、機能せず、次のように表示されることです。
チュートリアルのようにコードベースを設定したので、何が起こっているのか本当にわかりません...どんな提案も本当に感謝しています。前もって感謝します。
スタックトレースは次のとおりです。
編集:Additionクラスのrmicを実行してスタブを作成しても、AdditionInterfaceではなくAddition_Stubであっても、常にunmarshallExceptionがあることに注意してください
git - Codebase Permission denied (publickey) からリポジトリを複製します。致命的: リモート リポジトリから読み取れませんでした
こんにちは、私はこのコードベース アカウントを持っており、特定のフォルダーにクローンしたいと考えています。コードベースのプロファイルに SSH 公開鍵を既に追加しました。git clone を試みたとき、プロジェクトの特定のパスは次のようになります
「ウェブサイト」に複製中... 許可が拒否されました (公開鍵)。致命的: リモート リポジトリから読み取れませんでした。
正しいアクセス権があり、リポジトリが存在することを確認してください。
許可が拒否された(公開鍵)と表示されている理由を誰かが理解するのを手伝ってもらえますか?? コードベースのアカウントのプロファイルに SSH 公開鍵を既に追加しました。どんな助けでも大歓迎です。
c++ - 4つの異なるコードであるが関連するコードベースでvimプロジェクトスペースを設定する
私は vim が大好きな初心者の vim ユーザーで、開発ワークフローの次のステップに進みたいと考えています。
3 つの異なるコンパイラを使用してコンパイルされた 4 つの異なる C/C++ コード ベースがあります。各コード ベースには、コンパイラ用の独自のプロジェクトとメイクファイルがあります。コンパイラを開いたままにして、さまざまなプロジェクトをコンパイルします。2 つのコード ベースはデバイスのファームウェア用、1 つのコード ベースはライブラリ用、最後のコード ベースはライブラリを使用してデバイスと対話するクロス プラットフォーム デスクトップ アプリ用です。
私は主にコード編集に vim を使用しています。現在、いくつかの異なる vim ウィンドウを開いたままにしています (つまり、コード ベースごとに 1 つ)。さまざまなコード ファイルを開くために vim エディターを何度も終了しますが、これは非常に非生産的です。多くの場合、同じコード ベース内の別のファイルで関数を検索する必要があります。あるコードベースからコンパイルされたソフトウェアが別のコードベースのプログラムによって生成されたデータを処理し、定義などを再確認する必要があるため、コードベースを切り替える必要があることがよくあります。
vimを使用してこれを整理するより良い方法があるかどうか疑問に思っていますか? エキスパートの vim ユーザーは、同じ vim 環境内で関連する複数のコード ベースを操作するために開発ワークフローをどのようにセットアップし、どのようにコード ベースを効率的にナビゲートするのでしょうか?
java - RMI サーバーが不足しているクラスを HTTP コードベース サーバーから動的にロードしない
環境
これは Java RMI を使用するアプリケーションで、次のものがあります。
- ホスト A 上のクライアントとホスト B 上のサーバー。
- ホスト A 上の HTTP サーバー。クライアントとサーバーが使用するすべてのクラスのコピーを保持します。
- RMI レジストリはサーバー コードから作成され、サーバー JVM と CLASSPATH を共有します。
サーバーおよびクライアント アプリケーションの場合:
java.rmi.server.codebase
プロパティは (コード内で) HTTP サーバーの URL に設定されます。- 適切なポリシーを備えたセキュリティ マネージャーが配置されています。
- は
java.rmi.server.hostname
LAN アドレスに設定されます。
メソッド呼び出し:
- サーバー メソッドは、型
WorkRequest
(抽象クラス) のパラメーターで定義されます。 - クライアントは、サブクラスを使用してこのメソッドを呼び出します
WorkRequestSquare
。 WorkRequestSquare
サーバーコードでは決して言及されていません
サーバーコード
クライアントコード:
このコードは、サーバーの CLASSPATH にすべての関連クラスがあり、動的ロードが必要ない場合に機能します。
問題
サーバー側で CLASSPATH から削除WorkRequestSquare
すると、クライアント側で例外がスローされます (サーバー側では何もスローされません)。
WorkRequestSquare
サーバーコードで明示的に言及されていないため、動的にロードできるはずですが、そうはなりません。
バイパス
Stuart Marks から、プロパティjava.rmi.server.useCodebaseOnly
を に設定する必要があることがわかりましたfalse
。
このプロパティのデフォルト値は、JDK 7u21 でfalse
からに変更されました。を使用してローカルに定義された場所を除いて、JVM が任意の場所からクラスを動的にロードするのを防ぐために設定します。これは、パラメーターをマーシャリングするときにクライアント JVM によって設定されたコードベース値が、サーバーによって無視されることを意味します。true
useCodebaseOnly
true
java.rmi.server.codebase
WorkRequestSquare
useCodebaseOnly
true
サーバーで がにuseCodebaseOnly
設定さfalse
れ、WorkRequestSquare
クラスがサーバーの CLASSPATH から削除されると、サーバーは HTTP サーバーからクラス定義を取得するようになりました。これは有効なバイパスです。
質問
クライアントとサーバーのプロパティの値が同じであるため、まだ何か異常がありcodebase
ます。
useCodebaseOnly
サーバーにデフォルト設定された場合true
、JVM は RMI ストリームに追加されたクライアントを無視する必要がありましたが、クラスを取得するためにcodebase
独自のものを使用する必要がありました。codebase
WorkRequestSquare
codebase
クライアントとサーバーの値が同じであるため、これはとにかく成功するはずです。
誰かがその問題に光を当てることができますか?