Java 为什么获取(系统找不到指定的路径)

Java 为什么获取(系统找不到指定的路径),java,Java,下面是一些我使用过的代码示例,但无法理解为什么会发生这种情况 不工作代码(1) 工作守则(2) 不工作代码(3) 这和我之前所说的一样简单,因为文件现在就在您要查看的地方 您的工作代码与非工作代码在中完全不等效,并且仍然没有进行任何调试,以查看错误指定的实际路径实际是什么 不要将链式方法调用嵌入到方法中,而是将结果分配给一个引用变量,并对其进行步骤调试,以查看其实际值,而不是您所认为的确定值 至少System.out.println()它们的路径.toabsolutionPath(),您将看到它

下面是一些我使用过的代码示例,但无法理解为什么会发生这种情况

不工作代码(1)

工作守则(2)

不工作代码(3)


这和我之前所说的一样简单,因为文件现在就在您要查看的地方

您的工作代码与非工作代码在中完全不等效,并且仍然没有进行任何调试,以查看错误指定的实际路径实际是什么

不要将链式方法调用嵌入到方法中,而是将结果分配给一个引用变量,并对其进行步骤调试,以查看其实际值,而不是您所认为的确定值

至少
System.out.println()
它们的
路径.toabsolutionPath()
,您将看到它们不正确的原因,以及为什么我应该先关闭它

相对目录
表示当前工作目录,不管它是什么

。/…
表示从

images
表示
/images
。/../images
表示从
向上移动两个目录,然后使用
/images`

path.get(“.”)。resolve(“test.svg”)
将是
/test.svg

path.get(“images”).resolve(“test.svg”)
将是
/images/test.svg

/test.svg
显然与
/images/test.svg

这就是为什么你应该总是和他们一起工作,这样你才能确切地知道他们指的是什么


你只是没有正确地构建路径,正确的是只有你才能知道。

好吧,以防万一其他人也有同样的问题

这与文件的大小无关。 问题在于,在某些svg文件中,存在一些
剪辑路径
属性

当图像位于文件夹内时,batik无法解析此路径,这意味着假定
image.svg
位于文件夹
images
内,以下代码将无法工作:

jsvgcanvas.setURI("images/image.svg");
但是,如果同一图像不在文件夹中,而是在项目所在的主文件夹中,则它将工作:

jsvgcanvas.setURI("image.svg");
Files.copy(Paths.get(path), Paths.get("images").resolve("test.svg"), StandardCopyOption.REPLACE_EXISTING);
canvas.setURI("../../images/test.svg");
jsvgcanvas.setURI("images/image.svg");
jsvgcanvas.setURI("image.svg");