我的任务是将在Windows下运行的代码转换为在Linux下运行。
我想解决的第一个问题是没有使用File.separator。相反,有一堆硬编码的Srings使用Windows文件分隔符\
。
我在Linux环境下通过VirtualMachine运行java代码,这有点慢。
为了让我的生活更轻松,我只是在Windows下编译了我的代码(编译整个代码需要大约1小时),并将类文件粘贴到Linux环境中。
所以我的问题是,File.separator是在运行时还是编译时确定的,因为我仍然面临与路径相同的问题?
答案 0 :(得分:3)
在运行时确定。
在the OpenJDK 8 implementation中,File#separator
将通过FileSystem
返回的DefaultFileSystem#getFileSystem()
进行初始化。本课程将由JRE提供。它将根据Windows或Linux安装提供不同的值。
在the OpenJDK 7 implementation中,通过FileSystem
电话返回了native
个实施。再次返回的值取决于本地环境。