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也指导了我。
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也指导了我。