2015-12-09 30 views
4

在我的java类中,我有一个名为getProperties()static方法,返回java.util.Properties为什么我在代码中得到java.lang.StackOverflowError?

在另一个static方法,我调用该方法,如:

Properties p = getProperties(); 

而且getProperties()方法:

private static Properties getProperties(){ 
     Properties properties = new Properties(); 
     try{   
      InputStream fis = null;     
      fis = new FileInputStream("src/main/resources/fileName.properties"); //In DEBUG mode control comes until here and returns to Properties p = getProperties(); in the calling method every time continuously 
      properties.load(fis); 
      fis.close();    
     }catch(Exception e){ 
      //...... 
     } 
     return properties; 
    } 

错误:

Exception in thread "main" java.lang.StackOverflowError 
    at sun.misc.VM.isBooted(VM.java:165) 
    at java.util.Hashtable.initHashSeedAsNeeded(Hashtable.java:226) 
    at java.util.Hashtable.<init>(Hashtable.java:263) 
    at java.util.Hashtable.<init>(Hashtable.java:283) 
    at java.util.Properties.<init>(Properties.java:143) 
    at java.util.Properties.<init>(Properties.java:135) 

虽然在调试模式下的GetProperties() ;方法被连续调用而没有达到return语句。

+0

你正在使用哪个Java版本? – Kayaman

+2

不直接相关:将'fis.close();'移至(不存在的!)'finally'子句。如果您遇到异常,您将打开FileInputStream。 – Emz

+2

你能分享该文件的内容吗?那里可能会有些时髦吗? – Mureinik

回答

0

我执行了代码它没问题,但我认为错误Exception in thread "main" java.lang.StackOverflowError,也许有什么会导致问题。发生

Properties p = new Properties(); 
FileInputStream fs = new FileInputStream("src/main/resources/fileName.properties")); 
p.load(fs); 
+1

这与他们有什么不同?这会有什么不同?你为什么暗示它? –

+0

文件内容如何导致StackOverflowError? –

+0

我对什么有什么想法?我要求你澄清你的答案,因为我不明白它的相关性。你的代码和他们的代码非常相似。乍一看,你对StackOverflowError的建议似乎是不可能的。请澄清你的答案。 –

-1

的StackOverflowError因为你的代码是调用的次数静态方法的多个号码,您可以张贴整个代码,以便我们可以看到为什么的GetProperties方法没有达到回报?谢谢

+0

“在调试模式下getProperties();方法被连续调用而没有达到return语句”。所以我相信调用getProperties的静态方法很容易出错 – PhstKv

相关问题