gpt4 book ai didi

Java Swing 应用程序导致 ClassNotFoundException

转载 作者:行者123 更新时间:2023-12-01 19:15:57 26 4
gpt4 key购买 nike

我目前正在编写一个 Java Swing 应用程序。

这是我期望发生的过程:

  1. 用户点击按钮
  2. 多个任务在后台运行
  3. 任务完成后,JTextArea 将更新一条消息,表明该过程已完成。

我遇到的问题发生在第 2 步。其中一个后台进程使用如下所示的枚举:

public enum FilePaths {
MAIN_AUTH,
MAIN_AUTH_CREDS,
MAIN_ACTIONS,
MAIN_FETCH,
MAIN_META,
MAIN_RESRS,
TEST_AUTH,
TEST_AUTH_CREDS,
TEST_ACTIONS,
TEST_FETCH,
TEST_META,
TEST_RESRS;
}

当到达使用此枚举的第一个方法时,执行失败,显示以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: .../gui/guicontroller/authentication/FilePaths

Caused by: java.lang.ClassNotFoundException: ...gui.guicontroller.authentication.FilePaths

下面是 Swing 中最初启动后台执行的方法:

private class createButtonClicked implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
String message = guiController.rename();
console.append(message);
if (!guiController.getSessions()) {
String remove = guiController.remove();
console.append(removeSessions);
}
String addFields = guiController.writeData();
console.append(addFields);

}
}

概述:
- 控制台:JTextArea添加消息
- guiController: View 和模型之间的 Controller
- rename():使用 ProcessBuilder 运行 bash 脚本(内部使用 waitFor())(不会导致错误!)
- remove():导致错误并且是第一个使用Enum的方法调用

到目前为止我已经尝试过:

  1. 在 JUnit 测试中运行相同的方法调用 - 一切都运行良好
  2. 在运行应用和单元测试时使用调试器和类加载器,单元测试和应用中加载的类数量之间的差异为 ~300 与 ~50。
  3. 类加载器在运行应用时不显示枚举,但在运行单元测试时显示它。

编辑:所有代码都是我的,没有拼写错误。已经检查过了。

EDIT2:这里还有一些代码:

public class GuiController {
private AuthenticationParser authenticationParser;
...
public String remove() {
return authenticationParser.remove();
}
}
import static ...gui.guicontroller.authentication.FilePaths.*;

public class AuthenticationParser {
...
public String remove() {
String path = GuiUtils.generatePath(MAIN_AUTH_CREDS, name);
...
}
}

remove() 中显示的行是导致异常的原因。方法 generatePath() 不会被调用。GuiController 位于 ...gui.guicontroller 下。 AuthenticationParser 位于 ...gui.guicontroller.authentication 下,与 FilePaths 相同的包。

最佳答案

如果您说 JUnit 执行运行良好,而 swing 执行产生 ClassNotFound 异常,请检查有问题的类 (FilePaths) 是否位于主源目录中,而不是位于测试目录中。

关于Java Swing 应用程序导致 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59418128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com