JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 properties檔案在包進jar檔後就讀不到的問題
weberhwang





發文: 44
積分: 0
於 2019-05-21 23:27 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
環境:JDK 1.8
開發工具:Eclipse 2018-12

各位前輩好,請教關於讀properties檔案的問題
我在Eclipse裡面開了一個 Java Project 取名 grace
在Eclipse Explorer中的結構長的像下面這樣子
1
2
3
4
5
6
7
grace
  >JRE System Library
  >src
    >(default package)
      >Test.java
  >Referenced Library
  DatabaseConf.properties

而properties裡面的內容如下
1
name=weber


Test.java的程式碼如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.io.FileInputStream;
import java.util.Properties;
 
public class Test {
  public static void main(String[] args) {
    //這裡我想另外問個很呆的問題 為何前面不能加 private?
    //上面的問題,我找到答案了,方法內的變數不能使用存取控制修飾子,
    //是因為「本來就被關在方法內,外面都看不到」,所以設定private或public 是「不具意義」的行為。
    Properties props = null; 
    props = new Properties();
    try {
      props.load(new FileInputStream("DatabaseConf.properties"));
      System.out.println(props.getProperty("name"));
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

然後我發現,在eclipse中採用相對路徑 "DatabaseConf.properties" 是可以正常執行,印出weber
但當我包成grace.jar檔後,jar檔的內容如下
1
2
3
4
5
6
..
[META-INF]
.classpath
.project
DatabaseConf.properties
Test.class

看起來DatabaseConf.properties與Test.class是在同一層,
但當我在cmd指令下執行 java -jar grace.jar 時,它卻始終讀不到 DatabaseConf.properties 檔案,這是為何?
C:\>java -jar grace.jar
java.io.FileNotFoundException: DatabaseConf.properties (系統找不到指定的檔案。)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at Test.main(Test.java:10)


weberhwang edited on 2019-05-22 10:34
reply to postreply to post
作者 Re:properties檔案在包進jar檔後就讀不到的問題 [Re:weberhwang]
qrtt1





發文: 1747
積分: 31
於 2019-05-23 08:26 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
因為它在 .jar 內不是 File 而是一個 zip entry。你要改用 classloader 的 getResourceAsStream 來讀它。

reply to postreply to post
蝸牛角上爭何事?石火光中寄此身,隨富隨貧且歡樂,不開口笑是癡人。
my notes
作者 Re:properties檔案在包進jar檔後就讀不到的問題 [Re:qrtt1]
weberhwang





發文: 44
積分: 0
於 2019-05-23 10:05 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
感謝!已測試成功!

reply to postreply to post
» JWorld@TW »  Java 新手區

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8