Tom*_*ris 6 java scala jar proguard sbt
我在Scala中构建了一个(命令行)应用程序,我希望将其作为独立的JAR进行分发.我用sbt构建它:
import sbt._
class Project(info: ProjectInfo) extends DefaultProject(info) with ProguardProject {
override def parallelExecution = true
override def mainClass: Option[String] = // whatever
override def libraryDependencies = Set(
// whatever
) ++ super.libraryDependencies
override def proguardOptions = List(
"-keepclasseswithmembers public class * { public static void main(java.lang.String[]); }",
"-dontoptimize",
"-dontobfuscate",
proguardKeepLimitedSerializability,
proguardKeepAllScala,
"-keep interface scala.ScalaObject"
)
}
Run Code Online (Sandbox Code Playgroud)
我可以sbt run很好地运行我的代码,我可以将它打包并运行ProGuard(我对混淆不感兴趣 - 项目无论如何都是开源的),我只是用它来生成一个独立的JAR) .所以,我最终得到一个内置于target/scala_2.8.0 /的.min.jar文件
这是它变得复杂的地方.如果我运行这个JAR,我得到:
线程"main"中的异常java.lang.SecurityException:Manifest主要属性的签名文件摘要无效
好的,我没有签名.
所以,我自己生成一个签名密钥如下:
keytool -keystore ~/.keystore -genkey -alias tom
Run Code Online (Sandbox Code Playgroud)
然后,按照Java文档,我尝试签署JAR:
jarsigner -signedjar [whatever].jar -keystore ~/.keystore target/scala_2.8.0/[whatever]-1.0.min.jar tom
Run Code Online (Sandbox Code Playgroud)
它提示我:
Enter Passphrase for keystore:
Warning:
The signer certificate will expire within six months.
Run Code Online (Sandbox Code Playgroud)
好的,没关系.现在,当然,它会运行!
$ java -jar [whatever].jar
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
Run Code Online (Sandbox Code Playgroud)
我不知道从哪里开始.我是Java平台的新手.
| 归档时间: |
|
| 查看次数: |
1188 次 |
| 最近记录: |