美好的一天!请帮帮我。我启动这个例子
sbt> run
之后,所有人都玩了
sbt> package
在双击消息后将构建jar文件:
Error: A JNI error has occured, please check your installation and try again.
Scala版本:2.12.4。 JVM:1.8.0_152。 ScalaFX:8.0.102-R11
hello.scala:`
package hello
import scalafx.Includes._
import scalafx.application.JFXApp
import scalafx.application.JFXApp.PrimaryStage
import scalafx.scene.Scene
import scalafx.scene.paint.Color._
import scalafx.scene.shape.Rectangle
object HelloStage extends JFXApp {
stage = new JFXApp.PrimaryStage {
title.value = "Hello Stage"
width = 600
height = 450
scene = new Scene {
fill = LightGreen
content = new Rectangle {
x = 25
y = 40
width = 100
height = 100
fill <== when(hover) choose Green otherwise Red
}
}
}
}
build.sbt:
name := "Scala"
organization := "scalafx.org"
version := "1.0.5"
scalaVersion := "2.12.4"
scalacOptions ++= Seq("-unchecked", "-deprecation", "-Xcheckinit", "-encoding", "utf8")
resourceDirectory in Compile := (scalaSource in Compile).value
libraryDependencies ++= Seq(
"org.scalafx" %% "scalafx" % "8.0.102-R11",)
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full)
fork := true
答案 0 :(得分:1)
这是 Java classpath
问题。当您尝试执行生成的 JAR 文件时,它无法找到需要运行的jar文件。
尝试以下方法:
首先,复制&amp;将以下内容粘贴到project/plugins.sbt
:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.5")
这将加载sbt-assembly
插件,该插件将创建一个包含所有依赖项的 fat JAR 文件。
其次,将您的build.sbt
文件更改为以下内容:
name := "Scala"
organization := "scalafx.org"
version := "1.0.5"
scalaVersion := "2.12.4"
scalacOptions ++= Seq("-unchecked", "-deprecation", "-Xcheckinit", "-encoding", "utf8")
libraryDependencies += "org.scalafx" %% "scalafx" % "8.0.102-R11"
fork := true
mainClass in assembly := Some("hello.HelloStage")
这简化了您最初的工作。 宏天堂编译器插件不是必需的,我也删除了稍微奇怪的resourceDirectory
设置。
要创建 fat JAR ,请运行命令:
sbt
sbt> assembly
您正在寻找的JAR文件很可能位于target/scala-2.12/Scala-assembly-1.0.5.jar
。你现在应该好好去......
或者,你可以add all the necessary JAR files to your classpath。另一个可以提供帮助的插件(您可能不应该将其与sbt-assembly
一起使用) - 是sbt-native-packager
,它为您创建安装程序。然后,您可以安装应用程序并像常规应用程序一样运行它。