2016-04-28 11 views
0

まず、私のコードでEclipseファイルとTomcat 8.0.33のスタンドアローンの両方でwarファイル(mavenを使用)を解凍してみました。リソースはローカルには動作しますがサーバ上には動作しません

同じJavaバージョン1.8のWindows Server 2008で自分のコードを試しましたが、これはハードコードされた変数をいくつか入れても動作しますが、これはリソース

configuration.propertiesの場所がある
private static String getUsername() { 
     Properties prop = new Properties(); 
     InputStream input = null; 

     try { 

      input = new FileInputStream(MyConfiguration.class.getClassLoader() 
        .getResource("configuration.properties").getFile()); 

      // load a properties file 
      prop.load(input); 

      // get the property value and print it out 
      return prop.getProperty("username"); 

     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } finally { 
      if (input != null) { 
       try { 
        input.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
     return null; 
    } 

を読み込むためのコードであるreousrceファイル、それだけで(EclipseとTomcatの両方がスタンドアロン)でもMy Macに取り組んではなく、サーバー上の

src/main/resourcesで、サーバー上で、私はそのファイルが正しいディレクトリにあることがわかります。私はMavenを使用しています

、私はあなたが私を助けるために必要な他のどのような情報を知りませんが、あなたが言うならば、私はあなたの戦争とアプリケーションが含まれているjarファイルを開き、あなたの

答えて

1

あなたは、私が疑問に言っ input = Thread.currentThread().getContextClassLoader().getResourceAsStream("configuration.properties");

+0

を見ることはできません。 'configuration.properties'が戦争の中にバンドルされているとき、それをFileとしてアクセスすることはできません。 IDEで動作するのは、引き続きファイルとしてアクセスできるからです。 https://issues.apache.org/jira/browse/SUREFIRE-855はこれに関連しています。これで、「生産中」のように、クラスフォルダではなく成果物でテストすることができます。 –

0

を与えるだろう。開こうとしているリソースが、展開中のjar(戦争中)にあることを確認します。ほとんどの場合、これは私にとって起こったことです。なぜなら、このファイルをデプロイメントにコピーする必要があることをビルドプロセスに伝えられなかったからです。クラスファイルは自動的に実行されますが、常にリソースファイルとは限りません。

+0

を試して、それがそこにある、私は、まさにここにファイルを使用する理由を、それ –

関連する問題