私には独特の状況があります。
ある瞬間、分岐する必要があったので、Eclipseワークスペースのコピーを作成し、同じプロジェクトの2つの並列バージョンで作業を開始しました。
開発はWindowsワークステーションで行われます。テストの目的で、アプリケーションはLinuxサーバーにデプロイされます。
Windowsワークステーションでまたはいずれかのプロジェクトを実行すると、すべてが正常に機能しmvn jetty:run
ます。mvn clean compile
プロジェクトは同一を使用するpom.xml
ため、違いはありません。
ただし、ソースコードをLinuxサーバーに転送すると、古いブランチのみが100%コンパイルされ、新しいブランチは45%のようなものをコンパイルします。つまり、実行すると、非常に多くの不満が出ClassNotFoundException
ます...
奇妙な部分はそれです:
- 両方のプロジェクトは実質的に同一であり、お互いのコピー、98%
- Java用のUTF8のエンコード、奇妙な非アルファベットのファイル名はありません
- mvnはエラーなしでコンパイルされ、両方のプロジェクトで「BUILDSUCCESSFUL」と表示されます
target/classe
ただし、新しいプロジェクトのを調べてコンパイルした後、それぞれのパスにファイル.class
があるファイルが欠落しています。.java
src/main/java/
- 私はverboseとnowarnとそのようなパラメータでjavacを試しましたが、違いはありません
- jdk 1.6_33
非常に紛らわしいです。今私がしなければならないのは、Windowsワークステーションでソースをコンパイルし、ターゲット/クラスの内容をLinuxサーバーにコピーすることですが、実際には不要のようです。私の頭に浮かぶ唯一のことは、新しいバージョンがいくつかの重い最先端のジェネリックを使用しているということですが、それが傷つく場合は、a)WindowsでLinuxと同じ結果、b)エラーメッセージがあると思います。しかし、何もありません。多くの.classファイルが欠落している「BUILDSUCCESSFUL」だけです。
何か案は?ウッドゥー?
この問題の更新は次のとおりです。これはWindowsでも発生し始め(魔法のようにエラー表示なしでJavaファイルの大部分をコンパイルしませんでした)、最近コンパイルしたバージョンと後の非コンパイルバージョンの間でDIFFを取得しました。変更が少ないため、差分は簡単でした。サイズが約600kのJavaファイル(多くのインラインデータ初期化など)があることがわかりました。これが違いを生むようです。この特定のJavaファイルを2つに分割しました(元のファイルは109kに、ヘルパーは567kに)。これで、Windows用に再度コンパイルされます。おそらく、他のそのような大きなファイルを探し続けるか、これをさらに分割して、Linuxでもコンパイルが開始されるかどうかを確認します。