Prod代码在UNIX上运行,但需要在Windows上运行本地DEV。
当前代码从数据库获取UNIX格式的路径然后使用file.separator在该路径上构建,该文件添加了Windows分隔符,导致ftp失败,因为目标路径格式不正确。例如:/incoming/ri-etl\DEV\Rulebooks/tate_rbid_1715_retest
/incoming/ri-etl from a DB setting
\DEV\Rulebooks
使用文件分隔符构建代码。
由于其他团队使用MAC OS for Dev,他们在本地看不到问题。试图在 Tomcat ARGS , JAVA_OPTS 和 CATALINA OPTS 中使用-DFile.Separator=\/
(以及其他变体)过度使用path.separator成功。
我认为如果我可以强制UNIX格式,Windows将接受它并且FTP将起作用。 FTP不会接受所有以WINDOWS格式构建的路径。
我正在 ECLIPSE (TOMCAT 8,Java 7,Eclipse MARS)中运行 TOMCAT 。
有什么想法吗?
答案 0 :(得分:0)
Apache Commons在这里很方便:
FileNameUtils.separatorsToSystem()
会做你想要的。
public static void main(String[] args) throws Exception {
System.out.println(FilenameUtils.separatorsToSystem("/incoming/ri-etl\\DEV\\Rulebooks/tate_rbid_1715_retest"));
}
输出(在mac上):将反斜杠转换为 forwardslash
/incoming/ri-etl/DEV/Rulebooks/tate_rbid_1715_retest