java - 突然彻底崩溃:找不到符号、ClassNotFoundException(Java、NetBeans)
问题描述
我有一个在 Tomcat 中运行的 java webapp (servlet);以及相关的外部 .jar 库。一切都很好,突然间,找不到符号(方法名称)。即使我可以在 netbeans 中运行应用程序,我也无法构建应用程序以部署到服务器:构建失败;一系列与外部 .jar 文件相关的无法找到符号错误,在 NetBeans 中添加为“库”。图书馆一直运行良好,没有改变:
.../src/java/com/shelterislandsoftware/alphascreen/screen/FeatureNumber.java:842:
error: cannot find symbol
this.formatType = SisFormat.valueOf(in.readUTF());
symbol: method valueOf(String)
location: class SisFormat
.../src/java/com/shelterislandsoftware/alphascreen/screen/FeatureNumber.java:911:
error: cannot find symbol
out.writeUTF(formatType.name());
symbol: method name()
location: variable formatType of type SisFormat
类的源文件位于SisFormat.java
它们一直在的正确 src 文件夹中;这些方法存在于类中并正确编写。有什么建议么?谢谢。
-- 更新:现在,我也无法(重新)构建一个旧的 JavaFx 项目。Java 代码已构建并作为 osx 应用程序运行;我想更改 icns 图像,但无法重建。我怀疑新图像是构建问题的根源,就像我怀疑我的(完美功能的)java servlet 代码是我上面描述的构建问题的根源一样。我不确定,但我真的怀疑新的 NetBeans 8.2 和/或 osx Mojave 存在问题。没人感兴趣,那好吧。我刚刚将(以前的)库源类直接复制粘贴到上述主项目中,这让我可以构建。这是次优的,因为我在单独的 Web 应用程序中使用相同的 .jar 文件,所以现在我有两个相同类的副本要维护。哦,也一样。现在在上述 Web 应用程序中无法构建为外部 jar 的 jar 仍然可以完美地构建为其他 Web 应用程序中的外部 jar。任何。
解决方案
我解决了这个问题。新的 osx (Mojave) 和编写时最新的 Netbeans (8.2) 不能容忍某些包名。我通过更改我的包名称解决了这个问题。具体来说,我有项目(在他们自己的项目目录中)和一个库(在它自己的库目录中)。虽然这些目录在计算机的文件系统中是不同的,但 Netbeans 认为是“包名称”的那些路径的子段有一个共同的根元素。项目和库“包名称”都以 com.mydomain 开头,后跟项目或库的特定名称。我通过将库包名称更改为“lib.mydomain”来解决问题,并且所有时髦的构建问题都停止了。
推荐阅读
- java - Swing 应用程序一致性检查中的会话管理
- javascript - react-native-inline-edit 语法问题
- css - colab 不使用 css
- javascript - 如何释放codemirror焦点?
- python - Python 上的 SQL 语法不正确
- android - 如何在 Google 登录后禁用转换?
- javascript - 刷新浏览器时路由用户(socket.io)
- javascript - 从服务器接收的 jQuery 数据不使用 append() 保持原始格式
- python - 正在寻找向 DATAFRAME 添加一列,包括过滤 DATAFRAME
- python - Ruby 到 Python3 的转换建议