2 sinat 33415638 sinat_33415638 于 2016.02.23 14:53 提问

新人求助关于java.lang.StackOverflowError的异常问题

public class ProcessRow {
Properties source= new Properties();
{
try {
FileInputStream fis = new FileInputStream(new File(
inputPropertieName()));
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
source.load(isr);
fis.close();
} catch (Exception e) {
// throw new ExceptionInInitializerError(e);
}
}

public  String filterAlphabet(String alph) {
    alph = alph.replaceAll("[^(A-Z)]", "");
    return alph;
}

public String Pname() {
    UseProcess f=new UseProcess();
    String hai = f.fileName;
    String a = filterAlphabet(hai);
    String b = hai.substring(hai.indexOf(a), hai.indexOf(a) + 6);
    return b;

}

public  String inputPropertieName() {
    /*
     * System.out.println("请输入配置文件名称:"); Scanner a = new Scanner(System.in);
     * String propertieName = a.next();
     */
    // a.close();
    ProcessRow a = new ProcessRow();
    String propertieName = a.Pname();
    return propertieName;
}


Exception in thread "main" java.lang.StackOverflowError
at java.util.Dictionary.<init>(Dictionary.java:55)
at java.util.Hashtable.<init>(Hashtable.java:251)
at java.util.Hashtable.<init>(Hashtable.java:283)
at java.util.Properties.<init>(Properties.java:143)
at java.util.Properties.<init>(Properties.java:135)
at test.ProcessRow.<init>(ProcessRow.java:18)
at test.ProcessRow.inputPropertieName(ProcessRow.java:51)
at test.ProcessRow.<init>(ProcessRow.java:22)
at test.ProcessRow.inputPropertieName(ProcessRow.java:51)
at test.ProcessRow.<init>(ProcessRow.java:22)
at test.ProcessRow.inputPropertieName(ProcessRow.java:51)

4个回答

caozhy
caozhy   Ds   Rxr 2016.02.23 15:04

ProcessRow构造函数调用inputPropertieName()
inputPropertieName()内又调用ProcessRow a = new ProcessRow();造成循环调用,无限递归

sinat_33415638
sinat_33415638 那应该写成什么样啊
2 年多之前 回复
u012427018
u012427018   2016.02.23 15:12

楼上正解,代码里无限new ProcessRow 对象,导致栈溢出

u012427018
u012427018 回复sinat_33415638: 你的 inputPropertieName 和Pname 不都在一个类里定义的吗 ,直接调用Pname就行,不用用对象去调用
2 年多之前 回复
sinat_33415638
sinat_33415638 我想调用Pname()方法,有不能new ProcessRow ,那我应该写成什么样
2 年多之前 回复
Royal_lr
Royal_lr   Ds   Rxr 2016.02.23 17:03

大多是死循环造成内存溢出,,,

sinat_33415638
sinat_33415638   2016.02.26 10:02

我想调用Pname()方法,有不能new ProcessRow ,那我应该写成什么样

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
新人求助报错:HTTP Status 500 - Hibernate operation
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [null]; error code [0]; Connections could not be ac
求助!求助!关爱新人!
求助,请问下面代码为什么一运行就死掉了。。。。。#include "stdafx.h"#include#include #include#include using namespace std;#define  INIT_LIST_SIZE  20#define  ADATION 10#define  ERROR 0#define  OK 1#define  FAILED 0typedef i
新人求助
  大四在写论文  求一个X3D-Edit编辑器的下载链接
java.lang.StackOverflowError(hibernate内存溢出)
java.lang.StackOverflowError at java.lang.Integer.stringSize(Integer.java:384) at java.lang.Integer.toString(Integer.java:330) at java.lang.Integer.toString(Integer.java:739) at java.lang.String.v
新人打包apk报错,求助!
如图,程序正常运行,一打包就报错。gradle.properties,已经加入android.enableAapt2=falseappt2已禁用
新人求助无法启动resourcemanager
hadoop3.0.0版本伪分布式中    master能正常启动hdfs的namenode但是不能启动resourcemanager 新人看不太懂日志以下为日志:2018-02-10 03:17:41,955 INFO org.apache.hadoop.ipc.Server: Stopping server on 80402018-02-10 03:17:41,966 INFO org.apa...
java.lang.StackOverflowError 解决办法
我在处理数据库一对多的关系的时候 报出的这个错误 , 是由于函数调用层级过多导致 简单说就是 你把两边都产生了toString()方法 ,把多的一方的实体类里的toString()去掉,或者把两边的toString()都去掉 问题就解决了
eclipse编译过程中出现java.lang.StackOverFlowError
在开发过程中、遇到一个Const文件过长,eclipse编译过程中出现java.lang.StackOverFlowError 解决方案 打开eclipse目录下面的eclipse.ini文件 修改前 -vmargs -Xms40m -Xmx256m 修改后 -vmargs -Xms80m -Xmx512m -Xss512K Project -> C
java.lang.stackoverflowerror
Error: java.lang.stackoverflowerror 原因:出现死循环
android开发中的java.lang.StackOverflowError错误
http://blog.csdn.net/mozhizun/article/details/7051300 Android开发中StackOverflowError错误实例分析 一、概述  我在一个复杂的layout嵌套较多的android界面,碰到了java.lang.StackOverflowError这个Fatal Exception,app程序crash退出。