【发布时间】:2020-02-13 10:46:21
【问题描述】:
IntelliJ 中的以下组合给出“未知工件”错误。
- scala 2.13.1
- Java 13 JDK
- sbt 1.3.3
以下组合不会出错。
- scala 2.12.10
- Java 13 JDK
- sbt 1.3.3
来自类似问题here 的建议没有帮助:
- 文件/InvalidateAndRestart
- “更新项目解析器索引”
我错过了什么?
Github 上的最小项目:https://github.com/hcetinkaya/sbt-scalatest-error-demo
我的系统:
环境(更新):
OS: Windows 10.0 (Build 15063) VM on a VMWare 7.1
Scala Plugin: 2019.2.36
IntelliJ IDEA: 2019.2.3 (Ultimate Edition)
Build #IU-192.6817.14, built on September 23, 2019
with
Runtime version: 11.0.4+10-b304.69 amd64
VM: OpenJDK 64-Bit Server VM by Jetbrains
JAVA_HOME: E:\apps\java\jdk-13
SBT_HOME: E:\apps\sbt\sbt-1.3.3\sbt
build.sbt:
scalaVersion := "2.13.1" // "2.12.10" is OK. "2.13.1" gives an "unknown artifact" error
lazy val root = project.in(file("."))
.settings(
libraryDependencies ++= Seq(
"org.scalatest" %% "scalatest" % "3.0.8" % Test
)
)
build.properties:
sbt.version = 1.3.3
IntelliJ 项目结构:
Project Structure
Project
Project SDK: java 13 language level: 13
Modules
all sources -> language level: 13 /project default
dependencies Module SDK: project sdk
IntelliJ 设置:
Build, Execution, Deployment
Build Tools
sbt
jre: E:\apps\java\jdk-13
Launcher: E:\apps\sbt\sbt-1.3.3\bin\sbt-launch.jar
Compiler
Scala Compiler Server
Use compile Server for Scala: checked
JDK: Project default
JVM max heap, MB: 1024
更新:
sbt 产生以下错误日志:
error: error while loading String, class file '/modules/java.base/java/lang/String.class' is broken
(class java.lang.NullPointerException/null)
细节(切碎):
[info] Loading global plugins from C:\Users\hce\.sbt\1.0\plugins
[info] Updating ProjectRef(uri("file:/C:/Users/hce/.sbt/1.0/plugins/"), "global-plugins")...
[info] Done updating.
[info] Loading project definition from E:\learn\sbt\sbt-getting-started\project
[info] Updating ProjectRef(uri("file:/E:/learn/sbt/sbt-getting-started/project/"), "sbt-getting-started-build")...
[info] Done updating.
error: error while loading String, class file '/modules/java.base/java/lang/String.class' is broken
(class java.lang.NullPointerException/null)
[error] java.io.IOError: java.lang.RuntimeException: /packages cannot be represented as URI
[error] at java.base/jdk.internal.jrtfs.JrtPath.toUri(JrtPath.java:176)
[error] at scala.tools.nsc.classpath.JrtClassPath.asURLs(DirectoryClassPath.scala:204)
[error] at scala.tools.nsc.classpath.AggregateClassPath.$anonfun$asURLs$1(AggregateClassPath.scala:55)
[error] at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:240)
[error] at scala.collection.Iterator.foreach(Iterator.scala:937)
[error] at scala.collection.Iterator.foreach$(Iterator.scala:937)
[error] at scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
[error] at scala.collection.IterableLike.foreach(IterableLike.scala:70)
...
[error] Caused by: java.lang.RuntimeException: /packages cannot be represented as URI
[error] at java.base/jdk.internal.jrtfs.JrtPath.toUri(JrtPath.java:176)
[error] at scala.tools.nsc.classpath.JrtClassPath.asURLs(DirectoryClassPath.scala:204)
[error] at scala.tools.nsc.classpath.AggregateClassPath.$anonfun$asURLs$1(AggregateClassPath.scala:55)
[error] at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:240)
[error] at scala.collection.Iterator.foreach(Iterator.scala:937)
[error] at scala.collection.Iterator.foreach$(Iterator.scala:937)
[error] at scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
[error] at scala.collection.IterableLike.foreach(IterableLike.scala:70)
[error] at scala.collection.IterableLike.foreach$(IterableLike.scala:69)
[error] at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
[error] at scala.collection.TraversableLike.flatMap(TraversableLike.scala:240)
[error] at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:237)
[error] at scala.collection.AbstractTraversable.flatMap(Traversable.scala:104)
[error] at scala.tools.nsc.classpath.AggregateClassPath.asURLs(AggregateClassPath.scala:55)
...
[error] at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:111)
[error] at xsbt.boot.Launch$.withContextLoader(Launch.scala:130)
[error] at xsbt.boot.Launch$.run(Launch.scala:111)
[error] at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:37)
[error] at xsbt.boot.Launch$.launch(Launch.scala:119)
[error] at xsbt.boot.Launch$.apply(Launch.scala:20)
[error] at xsbt.boot.Boot$.runImpl(Boot.scala:56)
[error] at xsbt.boot.Boot$.main(Boot.scala:18)
[error] at xsbt.boot.Boot.main(Boot.scala)
[error] java.io.IOError: java.lang.RuntimeException: /packages cannot be represented as URI
更新 2:
以下组合和步骤对我有用
- scala 2.13.1
- Java OpenJDK 13.0.1(将 IntelliJ sbt 选项设置为 OpenJDK)
- sbt 1.3.3(将 IntelliJ sbt-launch.jar 选项设置为 sbt 1.3.3 目录)
步骤:
- 在命令行中创建一个新的示例项目(参见https://www.scala-sbt.org/1.x/docs/sbt-by-example.html)
- sbt 编译,测试应该可以工作
- 在 IntelliJ 中导入此项目
IntelliJ 仍然显示“未知工件”消息,但 sbt 编译,测试有效。
我假设新安装的 IntelliJ 在为 Cousier 编译 scala2_12 桥时遇到问题。
命令行重新编译,现在我可以在项目目录中看到之前丢失的scalatest_2.13
null\Coursier\cache\v1\https\repo1.maven.org\maven2\org\scalatest\scalatest_2.13
【问题讨论】:
-
我无法在 IntelliJ 2019.2.3、Scala 插件 2019.2.36 中复制该问题。
-
嗨@MarioGalic:我更新了我的环境信息。我使用相同的 Scala 插件版本和 IntelliJ IDEA Ultimate Edition。您是否文件 > 使缓存无效/重新启动...?
标签: intellij-idea sbt scalatest