0

properties一部のファイルを別のクラスに渡す必要がある単純なサーブレットがあります。

Properties prop = new Properties();
prop.load(new FileInputStream("/home/user/config.properties"));

上記は正常に動作します。

しかし、以下の正しい絶対パスに対処することはできません:

String protocol = prop.getProperty("protocol", "/home/user/protocol.properties");
String routes = prop.getProperty("routes", "/home/user/routes.properties");
MyClass message = new MyClass(protocol, routes, 0);

最後に、tomcatログから以下を受け取ります。

    INFO: Server startup in 3656 ms
java.io.FileNotFoundException: routes.properties (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:97)
    at com.cc.verticals.Messenger.<init>(Messenger.java:134)
    at com.foo.MyClass.<init>(MyClass.java:42)
    at com.verticals.cc.util.VerticalUtil.setup(VerticalUtil.java:59)
    at com.verticals.cc.util.VerticalUtil.main(VerticalUtil.java:259)
    at com.verticals.cc.dao.VerticalDao.<init>(VerticalDao.java:24)
    at com.verticals.cc.controller.VerticalController.<init>(VerticalController.java:33)

routes.properties42行目は、ファイルが入るコンストラクターを指しています。

メッセンジャー ライン 134 は次を指します。

prop.load(new FileInputStream(routesFilename));

プロパティファイルをアドレス指定してStringパラメータとして送信する方法はありますか? ありがとう。

4

2 に答える 2

0

見た目では (プロパティ ファイルの内容を投稿することをお勧めします)、config.properties 内に次のようなプロパティがありますroutes = routes.properties。Javaが起動された現在の作業ディレクトリ(存在しない)で開こうとしているため、呼び出すnew file(routes);と取得されますFileNotFoundExceptionroutes.properties

補足として、1 つのプロパティ ファイルを使用して別のプロパティを参照します。これは問題ありませんが、少し奇妙で型破りです。さらに、これらのファイルを「リソース」フォルダーに貼り付けて、絶対パスを削除し、移植性を高める必要があります。

于 2013-07-02T20:28:21.990 に答える
0

prop.getProperty メソッドは FileNotFoundException をスローできないことに注意してください。したがって、その例外は prop.load(); で以前にスローされたに違いありません。

ファイルのアクセス許可を開いていることを確認してください。ターミナルを開き、次のコマンドを発行します。

$ chmod 777 /home/user/routes.properties
$ chmod 777 /home/user/protocol.properties
于 2013-07-02T19:57:18.527 に答える