首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将scala代码打包到jar文件中,并且proguard不起作用

将scala代码打包到jar文件中,并且proguard不起作用
EN

Stack Overflow用户
提问于 2014-01-31 00:17:05
回答 2查看 512关注 0票数 1

我有一个这样的目录结构:

代码语言:javascript
复制
CSV_generator
  src
   main
    scala
     CSVGenerator.scala
  project
   plugins.sbt

我的scala对象的内容如下:

代码语言:javascript
复制
package tools.csv_generator

object CSV_Generator{
 import java.nio.file.{Paths, Files}
 import java.io.File
 import org.rogach.scallop._

def main(args: Array[String]){
  val opts = new ScallopConf(args) {

  banner("""This is the program CSV Generator""")
  val file_path = opt[String]("file_path",
                              required = true,
                              descr = "File Path")
  val dome_string = opt[String]("dome_string",
                                required = true,
                                descr = "Dome String")
  }

我的csv_generator/project/plugins.sbt:

代码语言:javascript
复制
  addSbtPlugin("com.typesafe.sbt" % "sbt-proguard" % "0.2.2")

我的csv_generator/build.sbt是:

代码语言:javascript
复制
  proguardSettings

  ProguardKeys.options in Proguard ++= Seq("-dontnote", "-dontwarn", "-ignorewarnings"
                                     , "-keepclasseswithmembers  class                    scala.CSV_Generator")

  ProguardKeys.options in Proguard +=         ProguardOptions.keepMain("src.main.scala.CSV_Generator")

在我的sbt中,当我运行proguard:proguard试图将我的所有代码打包到一个可运行的独立jar文件中时,我得到的结果是:

代码语言:javascript
复制
  [error] Error: The output jar is empty. Did you specify the proper '-keep' options?
  [trace] Stack trace suppressed: run last proguard:proguard for the full output.
  [error] (proguard:proguard) Proguard failed with exit code [1]
  [error] Total time: 14 s, completed Jan 31, 2014 12:18:38 AM

对于像我这样的小应用程序来说,proguard的例子很少。有人能帮帮忙吗?

EN

回答 2

Stack Overflow用户

发布于 2014-02-02 18:01:01

您还需要保留main方法作为入口点:

代码语言:javascript
复制
-keep class scala.CSV_Generator {
    public static void main(java.lang.String[]);
}

ProGuard通常会对此发出警告;最好不要关闭警告和注释。

请参见ProGuard文档>示例> A typical application

票数 0
EN

Stack Overflow用户

发布于 2014-02-06 11:06:18

另一种不太强大的解决方案更接近clojure的uberjar,我发现它非常适合我,那就是sbt " One -jar“。可在以下位置找到:

https://github.com/retronym/sbt-onejar

只需几行配置就可以工作,一切都可以很好地打包。这更接近我所需要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21461745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档