0

サードパーティのアプリケーションを使用する Java プロジェクトがあります。リソース フォルダーにライセンス ファイル (.lic 形式) を保存しています。Ant スクリプトを実行すると、このファイルが /lib/jar ディレクトリにコピーされ、サーバーで使用するプロジェクトが Jar ファイルにまとめられます。これは、システムをライブで実行するときにファイルにアクセスする必要がある場所です。フォルダ構成はこんな感じ

MyProject
  src
    package
      AccessingClass.java
  resources
    File.lic
  lib
    jar
      File.lic (upon copy from Ant)

これを行う最善の方法がわからないので、私が試した方法以外の提案はおそらく役立つでしょう. サードパーティのプロジェクトには、License.setLicense() のようなクラスにメソッドがあり、その場所への文字列またはファイルの InputStream を受け取ることができます。

私はそれにInputStreamを供給して遊んでいますが、getClass().getResourceAsStream()を呼び出すと常にnull値を取得します。ここに私が試したすべてがあります:

  • getClass().getResourceAsStream("../../../lib/jar/File.lic"); getClass().getResourceAsStream("/File.lic");

そして、バックアップとして私も試しました(ローカルビルドの場合、リソースフォルダーを試すと思います):

  • getClass().getResourceAsStream("../../../resources/File.lic"); getClass().getResourceAsStream("/File.lic");

このアクションを実行するためのより良い方法はありますか? または、誰かが私がしようとしていることが失敗する理由を教えてもらえますか? ありがとうございます。

4

2 に答える 2

0

このコードをスタンドアロンで実行していますか、それとも IDE env でクラスパスの問題のように見えますか。コマンド プロンプトで実行している場合は、クラスパスを lib dir に設定する必要があります。ide では、リソース dir がクラスパスにあることを確認してください。

于 2012-11-20T18:01:40.663 に答える
0

JARまず、 がクラスパスに追加されていることを確認する必要があります。

以下で動作するはずです。

  InputStream inputStream = 
    getClass().getClassLoader().getResourceAsStream("/resources/File.lic");

File.licjarのルートフォルダーに配置されていると仮定します。

于 2012-11-20T17:37:04.410 に答える