2012-02-08 9 views
0

シリアライズ可能クラスを実装するデスクトップアプリケーションがありますが、サーブレットを使用したWebアプリケーションに変換しています。この作業にNetbeansを使用します。デスクトップアプリケーションでは、私は、私は私のクラスにいたのと同じディレクトリに入れているので、私は、このファイルを置くべき場所FILE_INPUTは前にシリアライズされたオブジェクトからバイトコードfyleあるここでは、シリアライズされたファイルオブジェクトをプロジェクトnetbeansに配置します

InputStream input = ClassLoader.getSystemResourceAsStream(file_input); 

は、私は知りません。

(私はファイルがありますが、作成する必要はありません)

答えて

0

まず、Java EE WebアプリケーションでClassLoader#getSystemResourceAsStream()を使用しないでください。代わりに、ClassLoader#getResourceAsStream()を使用してください。私はまた、Java SEデスクトップアプリケーションにClassLoader#getSystemResourceAsStream()を使用して大きな疑問符を付けることにしました。

ClassLoaderは最終的にクラスパスからリソースをロードします。したがって、ファイルを新しいパスをサーバー経由でwebappのランタイムクラスパスに追加するには、webappのランタイムクラスパスまたはでデフォルトでカバーされているパスの1つにファイルが配置されていることを確認するだけですTomcatの/conf/catalina.propertiesshared.loaderプロパティなどの特定の構成設定。

webappのランタイムクラスパスでカバーされるデフォルトパスの1つは、WARの/WEB-INF/classesフォルダです。 IDEプロジェクトの観点からは、「Java Source」(src)フォルダのルートフォルダにファイルをドロップします。ここには、すべてのJavaパッケージとクラスがあります。 IDEは最終的にビルドされたWARファイル/WEB-INF/classesで終わるよう注意します。

私はまだあなたがではないと仮定します。明示的に述べたように、webappの内部からファイルを作成しています。それはうまくいかないでしょう。 実際ににも書き込みアクセス権が必要な場合は、代わりに絶対ディスクファイルシステムパスが必要になります。たとえば、VMの引数や環境変数として指定することで、いつでも設定可能にすることができます。

関連する問題