我使用NetBeans 7,Maven和NetBeans平台开展学校项目.该项目是使用"Maven/POM项目"项目模板创建的.它是一个多层"企业"应用程序,它使用多个模块(模型,集成,商务,演示,富客户端应用程序本身和其他几个).
这些模块之间存在依赖关系(但没有循环依赖关系).问题是,无论是Maven还是NetBeans,都会让人感到困惑.有几种类型的问题在没有任何触发的情况下出现.我必须不断重新编译模块,关闭并重新打开NetBeans,清除NetBeans缓存,删除和读取依赖项等等,以暂时删除问题.我在Windows XP SP3和Mac OS X上使用两种不同的NetBeans安装时遇到了这些问题.
症状是:
1)有时NetBeans决定不存在从另一个模块导入的类(并且我得到cannot find symbol错误.这反复发生,有时发生在几秒钟前我成功编译的模块.大多数时候,重新编译依赖项没有帮助.必要的依赖项在POM中声明,jar文件存在,如果我在项目视图中展开它们,我可以看到有问题的类.
2)有时NetBeans决定导入类的方法实际上不会抛出它声明要抛出的异常.由于对这些方法的调用通常由try块包围,因此NetBeans会显示错误消息a.package.SomeException is never thrown in body of corresponding try statement.如果我不删除try块,则由于NetBeans,模块无法编译.如果确实删除了块,则模块因Maven而无法编译(Maven,由于某种原因,可以看到异常,并抱怨它没有被捕获).这也反复发生,我不太确定如何可靠地解决这个问题.
此时,Maven和NetBeans的问题非常糟糕,我实际上无法在项目上工作.如果我不必使用NetBeans和Maven,我现在就会回到vim和Makefiles.有人至少认识到这些问题吗?
编辑:我已经提交了该项目,因为我已经完成了一些额外的工作,得到了20分中的30分,直到它离开了alpha阶段,我希望永远不必再次使用NetBeans.
我有一个带有contents($ unzip -l output.jar)的jar文件:
Archive: output.jar
Length Date Time Name
--------- ---------- ----- ----
0 2013-07-08 17:57 META-INF/
120 2013-07-08 17:57 META-INF/MANIFEST.MF
0 2013-07-08 17:43 some/
0 2013-07-08 17:43 some/package/
1247 2013-07-08 17:57 some/package/Main.class
2032 2013-07-08 17:57 some/package/plsql_o12_lexer$DFA22.class
8022 2013-07-08 17:57 some/package/plsql_o12_lexer$DFA23.class
212573 2013-07-08 17:57 some/package/plsql_o12_lexer.class
--------- -------
223994 11 files
Run Code Online (Sandbox Code Playgroud)
内容META-INF/MANIFEST.MF是:
Manifest-Version: 1.0
Created-By: 1.6.0_27 (Sun Microsystems Inc.)
Main-Class: some.package.Main
Run Code Online (Sandbox Code Playgroud)
但是,运行命令$ echo $CLASSPATH; java -jar output.jar.请注意CLASSPATH变量已设置.
/usr/share/java/antlr3-runtime-3.2.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/antlr/runtime/CharStream …Run Code Online (Sandbox Code Playgroud)