我有以下代码
File f = new File(fileSystemPath);
if(!f.exists())
throw new IllegalArgumentException("Static File="+getCanonicalPath(f)+" does not exist. fileSysPath="+this.fileSystemPath);
导致以下异常
WEBPIECESxPACKAGE.TestLesson1Json > testSynchronousController FAILED
java.lang.IllegalArgumentException: Static File=/Library/Workflow/webpieces/webserver/webpiecesServerBuilder/templateProject/WEBPIECESxAPPNAME/src/dist/public/favicon.ico does not exist. fileSysPath=public/favicon.ico
at org.webpieces.router.impl.StaticRoute.<init>(StaticRoute.java:44)
at org.webpieces.router.impl.model.R1RouterBuilder.addStaticRoute(R1RouterBuilder.java:89)
at org.webpieces.router.impl.model.R1RouterBuilder.addStaticFile(R1RouterBuilder.java:82)
at org.webpieces.router.api.routing.AbstractRoutes.addStaticFile(AbstractRoutes.java:38)
at WEBPIECESxPACKAGE.base.AppRoutes.configure(AppRoutes.java:44)
at org.webpieces.router.api.routing.AbstractRoutes.configure(AbstractRoutes.java:12)
at org.webpieces.router.impl.RouteLoader.loadAllRoutes(RouteLoader.java:171)
at org.webpieces.router.impl.RouteLoader.loadImpl(RouteLoader.java:114)
at org.webpieces.router.impl.RouteLoader.load(RouteLoader.java:73)
at org.webpieces.router.impl.ProdRouterService.start(ProdRouterService.java:49)
at org.webpieces.webserver.impl.WebServerImpl.startAsync(WebServerImpl.java:68)
at org.webpieces.webserver.impl.WebServerImpl.startSync(WebServerImpl.java:54)
at WEBPIECESxPACKAGE.Server.start(Server.java:232)
at WEBPIECESxPACKAGE.TestLesson1Json.setUp(TestLesson1Json.java:73)
然而,当我在if语句的程序中放入一个断点时,我会在存在检查之前和之后使用此结果执行ls -la命令(即它存在就好了)
[08:22][ruby-1.9.3][dhiller:/Library/Workflow/webpieces(master)]$ ls -la /Library/Workflow/webpieces/webserver/webpiecesServerBuilder/templateProject/WEBPIECESxAPPNAME/src/dist/public/favicon.ico
-rwxr-xr-x 1 dhiller wheel 1150 Jul 4 09:31 /Library/Workflow/webpieces/webserver/webpiecesServerBuilder/templateProject/WEBPIECESxAPPNAME/src/dist/public/favicon.ico
[08:22][ruby-1.9.3][dhiller:/Library/Workflow/webpieces(master)]$
而不是新的File,我尝试了这个,这对任何一个都无济于事
private File createFile(String fileSystemPath2) {
String[] split = fileSystemPath2.split("/");
File tmp = new File(split[0]);
for(int i = 1; i < split.length; i++) {
tmp = new File(tmp, split[i]);
}
return tmp;
}
我在jdk 1.8.0_111和mac 10.11.6上。有一点工作就是将user.dir附加到文件的开头,这样就像
String userDir = System.getProperty("user.dir")
File f = new File(userDir, systemPath)
为什么我需要这样做呢?这看起来很奇怪,因为我之前可以发誓这个有效吗?
答案 0 :(得分:0)
好吧,你做需要将用户主目录附加到该路径,因为否则它不是绝对路径,只有当它位于文件夹中时,你的应用程序才能找到它,哪个路径可以解决(在你的情况下在用户家中)。
答案 1 :(得分:0)
我修改了user.dir系统属性,但这显然会破坏相对文件的实际工作(至少在jdk1.8.0_111中)。即。只要文件只相对于原始user.dir,它就可以工作。不幸的是,intellij选择,gradle选择和eclipse选择的user.dir都是不一致的:(所以我想我会对齐它们并修改user.dir所以一切都会工作.... ooops,错误。这不起作用。
我在接下来的问题上添加了这个问题,我看到的是修剪版本。
user.dir property broken on OSX jdk 1.8.0_111? how about other OS, versions?