1

私には独特の状況があります。

ある瞬間、分岐する必要があったので、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があるファイルが欠落しています。.javasrc/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でもコンパイルが開始されるかどうかを確認します。

4

1 に答える 1

1

JDK 7 にアップグレードすると、この問題は最終的に自然に修正されました。

神秘的。

于 2012-12-20T07:28:04.963 に答える