我在尝试运行程序时不断收到此错误。
Exception in thread "main" java.lang.StackOverflowError
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:244)
at javax.swing.UIDefaults.getUI(UIDefaults.java:752)
at javax.swing.UIManager.getUI(UIManager.java:1001)
at javax.swing.JPanel.updateUI(JPanel.java:109)
at javax.swing.JPanel.<init>(JPanel.java:69)
at javax.swing.JPanel.<init>(JPanel.java:92)
at javax.swing.JPanel.<init>(JPanel.java:100)
at serverProperties.<init>(serverProperties.java:164)
at exportProperties.<init>(exportProperties.java:8)
at serverProperties.<init>(serverProperties.java:162)
只有在尝试从某个类访问某个方法后才会发生。
这是主要课程:
public class serverProperties extends JPanel
{
//Add classes
exportProperties writeProperties = new exportProperties();
//Assume I created the array sent to the exportProperties class
public serverProperties()
{
CheckBoxListener checkListener = new CheckBoxListener();
//Assume I created the check box and added the listener for it
}
private class CheckBoxListener implements ItemListener
{
public void itemStateChanged (ItemEvent event)
{
JCheckBox checkBox;
checkBox= (JCheckBox)event.getSource();
//Process check Boxes
if (checkBox.isSelected())
{
checkBox.setText("Yes");
writeProperties.exportFile(propertiesArr);
}
}
}
}
这是上面代码访问的类的代码:
public class exportProperties extends serverProperties
{
public void exportProperties(String[] args)
{
exportFile(args);
}
public static void exportFile(String[] propertiesArr)
{
try
{
FileWriter outFile = new FileWriter("Path/file.txt");
BufferedWriter out = new BufferedWriter(outFile);
//Loop through properties
for (int i=0; i < 27; i++)
{
out.append(propertiesArr[i]);
}
//out.write("Test");
out.close();
}
catch (IOException exception)
{
exception.printStackTrace();
}
}
public void importFile()
{
}
}
一旦我删除了对exportProperties类的调用,该程序就可以正常工作。 带错误信息,最后两行
at exportProperties.<init>(exportProperties.java:8)
at serverProperties.<init>(serverProperties.java:162)
他们在结束之前重复了很多次。
我用谷歌搜索,谷歌搜索,我不知道发生了什么...... 我很感激帮助!
答案 0 :(得分:8)
你的serverProperties
班有这个:
exportProperties writeProperties = new exportProperties();
...创建exportProperties
的实例。但是exportProperties
扩展serverProperties
,构建exportProperties
会再次执行上面的行 ......所以它会继续。
在不知道自己想要达到的目标的情况下,除了“不要那样做”之外,很难给出非常具体的帮助。我怀疑你不应该在这里使用继承。 (目前尚不清楚为什么要扩展JPanel
...尝试优先考虑合成而不是继承。)
(您还应该修改您的类名以遵循Java约定......)