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

问题描述

新人求助关于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)

解决方案

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

解决方案二:

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

解决方案三:

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

解决方案四:

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

时间: 2024-11-03 19:10:05

线程-新人求助关于java.lang.StackOverflowError的异常问题的相关文章

新人求助 关于JAVA的基础问题

问题描述 新人求助 关于JAVA的基础问题 刚开始学习JAVA 想请教一下这里面的!X表示的是什么?是X=false吗? 解决方案 这里的!x是判断的意思而if里的布尔值只有为true的时候才会执行其后面花括号里的程序.所以当x的布尔值为true时!x是false后面花括号里的代码是不会执行的.当x的布尔值为false时!x是true这时后面花括号里的代码才会执行的. 解决方案二: 是的,非操作,就是如果x的值为false,那么非就是true,就会进入条件分支了. 解决方案三: 如果x为fals

java.lang.StackOverflowError的问题

问题描述 java.lang.StackOverflowError的问题 很简单的一段代码,也知道是哪里错误,就是不明白为什么,希望大侠们指教指教 当调用main.drop(6000) 就报错了, drop(int times)方法里调用了自身的方法,这样为什么会导致报错呢 ```public class Main { private double TotalHeight = 100; private double CurHeight = 50; public void drop(int tim

新手关于使用java集合造成的java.lang.StackOverflowError

问题描述 新手关于使用java集合造成的java.lang.StackOverflowError 如图的题目, 据此,我写了三个类,第一个Student类,代码: package com.wms.StudentManager2; import java.util.List; public class Student { private String name; private int age; private List crList; public List crList() { return

Exception in thread &amp;amp;quot;main&amp;amp;quot; java.lang.StackOverflowError异常问题

问题描述 今天在学习Hibernate一对一关联的时候,跟平常一样,写POJO,然后测试时,报了Exceptioninthread"main"java.lang.StackOverflowError异常,百度得知是程序陷入了无限循环,但就是一个简单的JavaBean,也没有哪段程序会导致错误,然后经过测试,给Person和IdCard加入了无参构造,程序就能正常运行了,但不知道原理是什么,求大神解答packagecom.wss.dao;publicclassPerson{private

java.lang.IllegalArgumentException 错误异常求解

问题描述 java.lang.IllegalArgumentException 错误异常求解 上面是代码的日志 求大神指点 解决方案 有一个方法传参或者是什么,参数类型错了 看看提示在哪一行 解决方案二: 解决spring的java.lang.IllegalArgumentException异常.hibernate中java.lang.IllegalArgumentException异常可能的原因

java.lang.StackOverflowError: stack size 1036KB 错误

问题描述 机型:锤子T2 版本:5.1.1SDK版本:2.2.5java.lang.StackOverflowError: stack size 1036KB at com.easemob.cloud.HttpClientConfig.getDefaultUserAgent(Unknown Source) at com.easemob.cloud.HttpClientConfig.getDefaultHttpClient(Unknown Source) at com.easemob.cloud.

从jsp中调用Applet,出现java.lang.reflect.InvocationTargetException异常

问题描述 项目中通过jsp访问硬件,使用Applet访问硬件com串口,但是,从jsp中访问applet中的方法时,提示java.lang.reflect.InvocationTargetException错误,此方法中包括了访问硬件com串口的类.另外,单独作为一个application运行这样applet,是正常的. 解决方案 解决方案二:LZ把堆栈最好都贴出来,如果可以还有报错代码段.解决方案三:是不是你引入了其他的Jar包,但是这个Applet找不到这个Jar包导致的这种包冲突最难搞了

刚学习JSF,出现java.lang.ClassNotFoundException的异常

问题描述 <?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://ja

java.lang.StackOverflowError异常解决

在hibernate一对多映射中,两个实体都重写了toString()方法,,应用程序递归太深了,所以发生了堆栈溢出.解决方法就是将多的一方对象里面重写的toString方法去掉,或者两个对象里面重写的toString方法都去掉 另一个问题是将一方的inserse设置为true,只有一方维护关系,否则会造成重复更新. 一.Inverse是hibernate双向关系中的基本概念.inverse的真正作用就是指定由哪一方来维护之间的关联关系.当一方中指定"inverse=false"(默认