神秘的javac行为:linux与windows

时间:2012-06-13 09:08:21

标签: maven javac

我有一种奇怪的情况。

有一次,我需要分支,所以我复制了我的eclipse工作区,并开始研究同一个项目的两(2)个并行版本。

开发在Windows工作站上完成。出于测试目的,将应用程序部署到Linux服务器上。

如果我在Windows工作站上为任一项目运行mvn jetty:runmvn clean compile,一切正常。项目使用相同的pom.xml,因此没有区别。

但是,如果我将源代码转移到Linux服务器上,只有旧分支编译100%而新分支编译类似45%的含义,如果我运行它,它会给出很多关于ClassNotFoundException的抱怨。 ..

奇怪的是:

  • 这两个项目实际上是相同的,彼此的副本,98%
  • 编码UTF8 for Java,没有奇怪的非字母文件名
  • mvn编译没有错误,它在两个项目中都说“BUILD SUCCESSFUL”
  • 但是,在编译后查看较新项目的target/classe时,缺少.class个文件,其.java路径中有src/main/java/个文件< / LI>
  • 我尝试了javac与verbose和nowarn等参数,没有区别
  • jdk 1.6_33

非常混乱。现在我要做的是在Windows工作站上编译源代码并将目标/类内容复制到Linux服务器上,但似乎真的没必要。我想到的唯一一件事就是新版本使用了一些重要的前沿泛型,但如果这样会受到影响,我会认为a)Windows上的结果与Linux相同,b)一些错误信息。但没有什么,只是“建立成功”与许多缺少.class文件。

有什么想法吗? Woodoo?

以下是该问题的一些更新:它也开始在Windows上发生(神奇地没有编译大部分的java文件而没有任何错误指示)然后我只是在最近编译的版本和后来的版本之间使用了DIFF非编译版本。差异很容易,因为只有一些变化。我发现我有一个大小约600k的java文件(许多内联数据初始化等),这似乎有所不同。我将这个特定的java文件分成两部分(原始分为109k,助手分为567k)。现在它再次为Windows编译,我可能会继续寻找其他这样的大文件,或者进一步拆分这个文件以确定它是否也将开始在Linux上编译!

1 个答案:

答案 0 :(得分:1)

当我们升级到JDK 7时,问题最终会自行解决。

神秘。