繁体   English   中英

Java 6-尝试复制和粘贴文件时出现StackOverflowError

[英]Java 6 - StackOverflowError when trying to copy and paste a file

Java 6
jboss-as-7.1.1.Final

我需要复制并粘贴文件。 使用org.apache.commons.io.FileUtils,我尝试了以下代码,

如果我从jsp调用sync()

... org.apache.catalina.core.ApplicationHttpRequest.removeAttribute(ApplicationHttpRequest.java:280)的java.lang.StackOverflowError [org.apache.catalina.core.ApplicationHttpRequest的[jbossweb-7.0.13.Final.jar:]。 org.apache.catalina.core.ApplicationHttpRequest.removeAttribute(ApplicationHttpRequest.java:280)上的removeAttribute(ApplicationHttpRequest.java:280)[jbossweb-7.0.13.Final.jar:] [jbossweb-7.0.13.Final.jar: ]

private void sync() {
    try {
        FileUtils.copyFile(new File("C:/jboss-as-7.1.1.Final/standalone/deployments/admin.war/xml/news_src/compose.xml"), 
        new File("C:/jboss-as-7.1.1.Final/standalone/deployments/admin.war/xml/news_dest/compose.xml"));            
    } 
    catch (IOException e) {
        e.printStackTrace();
    }
}

如果我运行的代码与独立的Java应用程序相同,则文件将被复制并粘贴到目标位置

public static void main(String s[]) {
    try {
        FileUtils.copyFile(new File("C:/jboss-as-7.1.1.Final/standalone/deployments/admin.war/xml/news_src/compose.xml"), 
        new File("C:/jboss-as-7.1.1.Final/standalone/deployments/admin.war/xml/news_dest/compose.xml"));        
    } 
    catch (IOException e) {
        e.printStackTrace();
    }
}

为什么在JBoss环境中调用的代码执行与Java应用程序相同的代码成功运行时,为什么会出现StackOverflowError? 谢谢。

我猜想是因为您要将文件复制到具有要复制文件的程序的WAR中,所以它将同步。 然后将文件复制到正在复制文件的WAR中,然后进行同步。 然后将文件复制到正在复制文件的WAR中,然后进行同步...。

JBoss足够聪明,可以尝试通过自动重新部署来重新加载WAR文件中更改的代码。 当您作为独立的Java应用程序运行时,没有容器,因此不会重新部署。

我找到了解决此问题的方法。 我的框架(内部构建的框架)中的操作类配置不正确,因此导致在循环中调用操作类。 我更新了该设置,从而防止了循环执行操作类。

这样的帖子也指导了我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM