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(),得到

... java.lang.WhosebugError at org.apache.catalina.core.ApplicationHttpRequest.removeAttribute(ApplicationHttpRequest.java:280) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationHttpRequest.removeAttribute(ApplicationHttpRequest.java:280) [jbossweb-7.0.13.Final.jar:] at org.apache.catalina.core.ApplicationHttpRequest.removeAttribute(ApplicationHttpRequest.java:280) [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 应用程序 运行 相同的代码时出现 WhosebugError?谢谢。

我猜,由于您正在将文件复制到具有正在复制它的程序的 WAR,然后它会同步。然后将文件复制到正在复制它的 WAR 中,然后同步。然后将文件复制到正在复制它的 WAR,然后同步....

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

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

这个SO post也指导了我。