scalaFX独立执行jar文件

时间:2017-10-27 08:06:38

标签: jar sbt scalafx

美好的一天!请帮帮我。我启动这个例子

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

1 个答案:

答案 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,它为您创建安装程序。然后,您可以安装应用程序并像常规应用程序一样运行它。