我有一个特殊的情况。
有一次,我需要进行分支,所以我复制了我的 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
中有文件.java
src/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 上开始编译!