首页 > 解决方案 > 突然彻底崩溃:找不到符号、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。任何。

标签: javanetbeans

解决方案


我解决了这个问题。新的 osx (Mojave) 和编写时最新的 Netbeans (8.2) 不能容忍某些包名。我通过更改我的包名称解决了这个问题。具体来说,我有项目(在他们自己的项目目录中)和一个库(在它自己的库目录中)。虽然这些目录在计算机的文件系统中是不同的,但 Netbeans 认为是“包名称”的那些路径的子段有一个共同的根元素。项目和库“包名称”都以 com.mydomain 开头,后跟项目或库的特定名称。我通过将库包名称更改为“lib.mydomain”来解决问题,并且所有时髦的构建问题都停止了。


推荐阅读