简体   繁体   English

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

[英]java.nio.file.NoSuchFileException: /home/user/java/8.0.181-oracle/jre/lib/jfxrt.jar while executing scala program using `sbt runMain`

I'm trying to run a program from SBT using sbt runMain command. 我正在尝试使用sbt runMain命令从SBT运行程序。 But I'm getting below error - 但是我遇到了错误-

[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 version details 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

The java version details - 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)

Also I couldn't find jfxrt.jar file anywhere within jdk folder. 另外我在jdk文件夹中的任何地方都找不到jfxrt.jar文件。

$ find . -type f -name jfxrt.jar

This command return no results. 该命令不返回任何结果。

The fedora version is - fedora版本是-

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

Why do I get this this error? 为什么会出现此错误? How to resolve this error? 如何解决这个错误?

I believe the problem lies with the directory structure of the Java JRE. 我相信问题在于Java JRE的目录结构。 Clearly, your jfxrt.jar is not where your program thinks it is, and this is because in Java 8 this jar is in the java/<version>/jre/lib/ext/ directory as opposed to java/<version>/jre/lib/ which is where your program is looking for it as it seems from the stack trace. 显然,您的jfxrt.jar不在程序认为的位置,这是因为在Java 8中,此jar位于java/<version>/jre/lib/ext/目录中,而不是java/<version>/jre/lib/ ,这是您的程序在堆栈跟踪中寻找它的地方。 One sort of hacky way of fixing this would be to copy your jfxrt.jar to the java/<version>/jre/lib/ directory so it would find the file properly. 解决该问题的一种方法是将jfxrt.jar复制到java/<version>/jre/lib/目录中,以便可以正确找到该文件。

There may exist a more stable/safe solution for this, but until I (or someone else) finds this way, I would do this. 可能存在一个更稳定/安全的解决方案,但是直到我(或其他人)找到这种方式,我才会这样做。 Leave a comment if you have a question and I'll do my best to answer it. 如果您有任何问题,请发表评论,我会尽力回答。 Hope this helps! 希望这可以帮助!

EDIT: I was searching around SO, and it appears that this question should also maybe help with getting the path set correctly. 编辑:我正在四处搜索,似乎这个问题也应该有助于正确设置路径。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM