Java 文件的硬编码相对路径
Java Hardcoded Relative Path to File
我编写了一些依赖于我包含在我的构建路径中的另一个项目的代码。我遇到的问题是另一个项目引用了一些 XSL 文件,并且正在使用相对路径访问它们 ./xlst/
.
我已经通过简单地将 xlst 文件夹复制到我的项目中来在我的本地工作区中处理了这个问题。那时一切都是肉汁。但是,我现在已经将它打包并放到服务器上,我不认为它会在 JAR 中查找相对路径!
以下是您将在错误日志中找到的要澄清的内容(注意路径):
ERROR: 'Could not compile stylesheet'
FATAL ERROR: 'Could not compile stylesheet'
:c:\logs\.\xslt\Transform.xsl (The system cannot find the path specified)
我的问题是:我看到它自动开始查找 C:\logs(又名当前工作目录),然后附加相对路径,我可以强制它从 c:\logs 以外的其他地方开始吗?是否在我可以放入 XSL 文件的适当文件夹中查找?
编辑:我尝试在调用其他项目方法之前添加一个 File f = new File("c:/myPathToXsltFolder/") 以查看它是否会影响 "Current Working Directory" 路径,但它没有似乎影响它。
P.S。我需要在不修改其他项目的情况下执行此操作,因此无法使用建议将相对路径更改为 getClass().getResource(name).
Java中的所有路径都是相对于user.dir
属性的,可以在-Duser.dir=<path>
启动JVM时设置。尽管如此,这会影响整个程序,并且所有路径都将相对于您指定的路径,而不是像您说的那样 c:\logs
。
使用相对路径不是一个好主意,所以大多数东西都使用可配置的属性或资源,更改 user.dir
可能不会影响任何其他内容。但是由于您将东西放到服务器上,那么该服务器(如果它是 java 网络服务器而不仅仅是服务器机器)可能会期望在用户目录下有特定的布局。在这种情况下,我想你必须测试问题。
我编写了一些依赖于我包含在我的构建路径中的另一个项目的代码。我遇到的问题是另一个项目引用了一些 XSL 文件,并且正在使用相对路径访问它们 ./xlst/
.
我已经通过简单地将 xlst 文件夹复制到我的项目中来在我的本地工作区中处理了这个问题。那时一切都是肉汁。但是,我现在已经将它打包并放到服务器上,我不认为它会在 JAR 中查找相对路径!
以下是您将在错误日志中找到的要澄清的内容(注意路径):
ERROR: 'Could not compile stylesheet'
FATAL ERROR: 'Could not compile stylesheet'
:c:\logs\.\xslt\Transform.xsl (The system cannot find the path specified)
我的问题是:我看到它自动开始查找 C:\logs(又名当前工作目录),然后附加相对路径,我可以强制它从 c:\logs 以外的其他地方开始吗?是否在我可以放入 XSL 文件的适当文件夹中查找?
编辑:我尝试在调用其他项目方法之前添加一个 File f = new File("c:/myPathToXsltFolder/") 以查看它是否会影响 "Current Working Directory" 路径,但它没有似乎影响它。
P.S。我需要在不修改其他项目的情况下执行此操作,因此无法使用建议将相对路径更改为 getClass().getResource(name).
Java中的所有路径都是相对于user.dir
属性的,可以在-Duser.dir=<path>
启动JVM时设置。尽管如此,这会影响整个程序,并且所有路径都将相对于您指定的路径,而不是像您说的那样 c:\logs
。
使用相对路径不是一个好主意,所以大多数东西都使用可配置的属性或资源,更改 user.dir
可能不会影响任何其他内容。但是由于您将东西放到服务器上,那么该服务器(如果它是 java 网络服务器而不仅仅是服务器机器)可能会期望在用户目录下有特定的布局。在这种情况下,我想你必须测试问题。