java.nio.file.NoSuchFileException:/home/user/java/8.0.181-oracle/jre/lib/jfxrt.jar使用`sbt runMain`执行scala程序时

时间:2018-08-24 03:00:41

标签: java java-8 sbt

我正在尝试使用sbt runMain命令从SBT运行程序。 但是我遇到了错误-

[error] java.nio.file.NoSuchFileException: /home/user/java/8.0.181-oracle/jre/lib/jfxrt.jar
[error]     at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
[error]     at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
[error]     at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
[error]     at sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55)
[error]     at sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:144)
[error]     at sun.nio.fs.LinuxFileSystemProvider.readAttributes(LinuxFileSystemProvider.java:99)
[error]     at java.nio.file.Files.readAttributes(Files.java:1737)
[error]     at java.nio.file.FileTreeWalker.getAttributes(FileTreeWalker.java:219)
[error]     at java.nio.file.FileTreeWalker.visit(FileTreeWalker.java:276)
[error]     at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:322)
[error]     at java.nio.file.Files.walkFileTree(Files.java:2662)
[error]     at java.nio.file.Files.walkFileTree(Files.java:2742)
[error] (Compile / runMain) java.nio.file.NoSuchFileException:  /home/rajkumar/java/8.0.181-oracle/jre/lib/jfxrt.jar
[error] Total time: 12 s, completed Aug 23, 2018 10:21:44 PM

SBT版本详细信息

 $ sbt about
 [info] This is sbt 1.2.1
 [info] The current project is ProjectRef(uri("file:/home/rajkumar/Coding/Java/ConcurrentProgrammingInScala/"), "concurrentprogramminginscala") 0.1
 [info] The current project is built against Scala 2.12.6

java版本详细信息-

$ java -version
  java version "1.8.0_181"
  Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
  Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

我在jdk文件夹中的任何地方都找不到jfxrt.jar文件。

$ find . -type f -name jfxrt.jar

此命令不返回结果。

fedora版本是-

$ cat /etc/fedora-release 
  Fedora release 28 (Twenty Eight)

为什么会出现此错误?如何解决此错误?

1 个答案:

答案 0 :(得分:1)

我相信问题在于Java JRE的目录结构。显然,您的jfxrt.jar不在程序认为的位置,这是因为在Java 8中,此jar位于java/<version>/jre/lib/ext/目录中,而不是程序正在查看的java/<version>/jre/lib/从堆栈跟踪中可以看出来。解决该问题的一种方法是将jfxrt.jar复制到java/<version>/jre/lib/目录中,以便可以正确找到文件。

为此可能存在更稳定/安全的解决方案,但是直到我(或其他人)找到这种方式,我才会这样做。如果您有任何问题,请发表评论,我会尽力回答。希望这会有所帮助!

编辑:我正在搜索SO,看来this这个问题也应该有助于正确设置路径。