如果可能,您能告訴我如何將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 –