如果可能,您能告诉我如何将Scala应用程序导出到可以直接在JVM中运行的正常可运行JAR?
谢谢将Scala应用程序导出为可运行JAR
回答
这是完全可能的,请参阅例如:running a maven scala project。由于Scala编译为Java字节码,JVM甚至不知道底层的实现语言。
本质上,在使用scalac
编译Scala资源之后,您将得到一堆.class
文件,您可以稍后将其打包到JAR中。然后,你可以使用简单的运行它们:
$ java -cp "your.jar:scala-library.jar" com.example.Main
请注意,您必须包括上scala-library.jar
的CLASSPATH(目前它几乎是9 MIB ...)并指定包含main
方法类。
如果你使用sbt来构建,你可以使用其中的一个jar插件。他们将把所有的依赖关系放入一个大的jar文件(包括所有的scala.jar文件)。这意味着你只需要一个jar文件,不必管理所有的依赖项。
与SBT-组件(主要来自https://github.com/sbt/sbt-assembly复制)的示例:
项目/ plugins.sbt:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "X.X.X")
build.sbt:
import AssemblyKeys._ // put this at the top of the file
seq(assemblySettings: _*)
然后就可以生成罐子用:
sbt assembly
作为Fabian答案的替代方案,如果您使用的是Maven,那么您可以使用assembly-plugin。喜欢的东西:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>package-jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>true</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifestEntries>
<SplashScreen-Image>splash.png</SplashScreen-Image>
</manifestEntries>
<manifest>
<mainClass>se.aptly.epm.main.PrognosisApp</mainClass>
</manifest>
</archive>
</configuration>
</execution>
</executions>
</plugin>
这将打包所有DEPS起来,包括斯卡拉 - library.jar(如果它在你的DEPS),但这样做有解开所有类夷为平地。这是因为可运行jar无法在jar中使用jar中的代码。
,使这项工作(这是更好),使用http://code.google.com/p/onejar-maven-plugin/,我认为这是一个Maven的魔力包装到一个罐子:http://one-jar.sourceforge.net/
还为一个广口瓶中的SBT-插件: https://github.com/sbt/sbt-onejar
为了打包运行的JAR Swing应用程序,为我工作的解决方案是我的项目导出为正常的jar文件(非执行),并更新JAR的清单到:
- add scala-library.jar scala-swing。jar包的路径
- 表明主类
您可以在以下路径的jar(你可以用7z格式例如打开)里面的清单文件:
META-INF/MANIFEST.MF
添加清单末尾的以下几行:
Main-Class: myPackage.myMainClass
Class-Path: scala-library.jar scala-swing.jar
现在,您的jar在点击它时应该正确执行。
注意:您可以在此处找到有关清单定制的更多信息: http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html。
她是我的解决方案,maven - >创建scala
可运行jar。
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.2</version>
<executions>
<execution>
<id>scala-compile-first</id>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<includes>
<include>**/*.scala</include>
</includes>
</configuration>
</execution>
<execution>
<id>scala-test-compile</id>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>xxx.xxx.xxx.Main</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>reference.conf</resource>
</transformer>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
- 1. 将Eclipse RCP应用程序导出到可运行jar文件
- 2. 用java -jar运行scala应用程序
- 3. 将Java导出为Jar应用程序
- 4. 将java应用程序导出到.jar
- 5. Eclipse导出为可运行JAR
- 6. 如何使用Netbeans将Maven项目导出为可运行jar?
- 7. Scala可运行的ProGuard进程JAR
- 8. 运行Scala Jar
- 9. 如何导出为可运行桌面应用程序java?
- 10. 使用Eclipse将JavaFX项目导出为可运行的程序
- 11. 将SWT应用程序导出为jar文件
- 12. 无法在Scala控制台导入jar来运行spark程序
- 13. 导出的Javafx应用程序不能作为Jar文件运行(Eclipse)
- 14. 导出可运行JAR文件
- 15. Eclipse导出到可运行的.jar
- 16. 运行的Scala程序作为一个Java应用程序
- 17. 为什么从Eclipse导出的可运行JAR不起作用?
- 18. 运行jar Rhapsody应用程序文件
- 19. 从Java应用程序内运行jar
- 20. 如何从java应用程序执行可运行JAR
- 21. 运行Scala jar文件时出现NoClassDefFoundError
- 22. 从Eclipse导出Scala项目为jar
- 23. Eclipse导出为可执行jar NullPointerException
- 24. 导出为可执行jar文件
- 25. 如何使用eclipse将图像文件导出为可运行JAR
- 26. 如何将JUnit4测试用例作为可运行jar文件导出
- 27. 从导出为可运行的.jar文件的Java应用程序中创建,解析和管理XML文件
- 28. 将内部可运行类导出到jar(剪辑)
- 29. 将Eclipse的Selenium TestNG脚本导出到可运行的jar中
- 30. java - 无法将图像导出到可运行jar文件中
该网址无效。尝试https://github.com/sbt/sbt-assembly –