1

我有一个特殊的情况。

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

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

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

但是,如果我将源代码传输到 Linux 服务器上,只有旧分支编译 100%,新分支编译大约 45%,这意味着如果我运行它,它会产生很多抱怨ClassNotFoundException......

奇怪的是:

  • 两个项目实际上是相同的,相互复制,98%
  • 为 Java 编码 UTF8,没有奇怪的非字母文件名
  • mvn 编译没有错误,它在两个项目上都显示“BUILD SUCCESSFUL”
  • 但是,在编译后查看target/classe较新项目的 s 后,缺少文件,在其各自的路径.class中有文件.javasrc/main/java/
  • 我已经尝试使用verbose和nowarn等参数的javac,没有区别
  • JDK 1.6_33

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

有任何想法吗?伍德?

这是对该问题的一些更新:它也开始在 Windows 上发生(神奇地没有编译大部分 java 文件而没有任何错误指示),然后我只是在最近编译的版本和后来的非编译版本之间进行了 DIFF。Diff 很简单,因为只需进行一些更改。我发现我有一个大小约为 600k 的 java 文件(大量的内联数据初始化等),这似乎有所作为。我将这个特定的 java 文件分成两部分(原始文件为 109k,辅助文件为 567k)。现在它再次为 Windows 编译,我可能会继续寻找其他这样的大文件或进一步拆分这个文件,看看它是否也能在 Linux 上开始编译!

4

1 回答 1

1

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

神秘。

于 2012-12-20T07:28:04.963 回答