次のJavaコードがあります:
public interface Defaults {
public static final String DIR_PATH = "a/b/c/";
File DIR_FILE = new File(DIR_PATH);
}
public class Main {
public File directory = Defaults.DIR_FILE;
}
これは Windows マシンでコンパイルされ、ローカルの nexus リポジトリにデプロイされました。その後、Linux マシンでの Maven ビルド中に実行されました。nullをmain.directory.list()
返すことになります。mvnDebugを使用すると、ファイルのパスが実際にはa\b\c
! デバッガーを使用してディレクトリを に変更するとnew File("a/b/c")
、コードが機能します。
コンパイラがシステム固有のセパレータをエンコードしたのはなぜですか? 解決策はありますか?