2016-03-28 12 views
-1

リモートLinuxマシン上で動作するTomcat 7インスタンスにwarファイルをデプロイしました.FileNotFoundExceptionsを取得しています。(Tomcat 7)配布されたjarファイルが見つかりません

私が書いていないコードを含む、プロジェクト内の参照されたジャーの1つは、いくつかのファイルを使用しています(これは私が含まれていますが、見つけられません)。これらのファイルはclassesフォルダーにあります。プロジェクト用に設定したクラスパスがこのjarファイルで無視されているようです。使用するこれらのファイル(例: .propertiesファイルはjarの外部にあります。

FileOutputStream fos = new FileOutputStream("Key.ser"); 

Eclipseでソースプロジェクトを開発するとき、私はこれらのエラーを得ていた。ここで

は、ファイルを起動する方法の一例です。私はRun Configurations - > Arguments - > Otherを使ってこれらのファイルを見つける場所をプロジェクトに設定することができましたが、エクスポートされた.warファイルはバンドルされていないように見えます。今私はwarファイル経由で別のサーバー上のTomcatにアプリケーションをデプロイしようとしているときに再び見ています。

jarが使用するこれらのファイルを見つけるために、デプロイされたTomcat 7 Webアプリケーションでデプロイ済みのjarファイルを設定するにはどうすればよいですか?私はそれを書いていないのでコードを変更するのは嫌ですので、これを避けることを本当に望んでいます。

これは、前述のようにEclipseと統合されたWindowsインスタンス上で実行されているローカルのTomcat 7で動作するようになっているので、おそらくこれは重複している可能性がありますか?

答えて

2

FileOutputStreamを使用してファイル名を参照するだけでは、ファイルを見つけることができません。このファイルを 'WEB-INF/classes'ディレクトリに置くと、クラスパス上に置くことができます。ファイルをロードするために

、あなたはこれに似たものを使用して、クラスパスリソースとして、それをロードする必要があります。

String classpathLocation = ""Key.ser""; 
URL classpathResource = Thread.currentThread().getContextClassLoader().getResource(classpathLocation); 

// Or if you want it as an inputstream: 
InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream(classpathLocation); 
+0

私は、結局darnitを、コードを変更するつもりは必要だようなので、それが聞こえます。私は興味があります、jarファイルの作業ディレクトリは何に設定されていますか?ファイルをハードリンクするだけかもしれませんか? – Wes

+0

プロセスまたはサービスとしてTomcatを実行する場合、デフォルトで作業ディレクトリはTomcatのインストール/ binディレクトリになります。ここでTomcat7.exeなどが一般的に起動されます。あなたが意味するところでは、jarが抽出される作業ディレクトリは何ですか、それは設定できます。詳細については、[tomcat documentation](https://tomcat.apache.org/tomcat-7.0-doc/config/host.html)で「workDir」を検索してください。 – pczeus

関連する問題