9

sbt-assembly を使用して実行可能な jar を作成していますが、jai imageio が MANIFEST.MF ファイルからベンダー名をロードするため、アプリケーションがクラッシュします。META-INF/MANIFEST.MF ファイルを手動で編集した場合:

Manifest-Version: 1.0
Main-Class: myMainClass

Implementation-Vendor: foo
Implementation-Title: bar
Implementation-Version: 1.0
Manifest-Version: 1.0
Main-Class: myMainClass

すべて正常に動作します。

追加の実装情報を jar に含めるように sbt または sbt-assembly を構成するにはどうすればよいですか? または、これを回避する別の方法はありますか?

(ps: パッケージ情報を検索する場所への参照: http://www.java.net/external?url=http://www.java2s.com/Open-Source/Java-Document/6.0-JDK- Modules/Java-Advanced-Imaging/com/sun/media/imageioimpl/common/PackageUtil.java.htm )

4

2 に答える 2

11

私はsbt0.11.2を使用していますが、sbtは追加の構成なしでマニフェスト情報をjarに追加します:)、なぜその問題が発生するのかわかりません。

これは私がローカルで作成したsquryljarのサンプルMANIFEST.MFです

Manifest-Version: 1.0
Implementation-Vendor: org.squeryl
Implementation-Title: squeryl
Implementation-Version: 0.9.5-rc1
Implementation-Vendor-Id: org.squeryl
Specification-Vendor: org.squeryl
Specification-Title: squeryl
Specification-Version: 0.9.5-rc1
Main-Class: org.squeryl.logging.UsageProfileConsolidator

ただし、これはbuild.sbtまたはBuild.scalaで構成できます

例えば

    import sbt._
    import Keys._
    import sbt.Package.ManifestAttributes

    //......

    //......      

    lazy val baseSettings = Defaults.defaultSettings ++ Seq(
    version := ProjectVersion,
    organization := Organization,
    scalaVersion := ScalaVersion,
    packageOptions := Seq(ManifestAttributes(
                      ("Implementation-Vendor", "myCompany"),
                      ("Implementation-Title", "myLib"))))
于 2012-01-27T19:19:28.727 に答える
0

問題は、sbt アセンブリがデフォルトのキーを MANIFEST.MF に追加しないことです。一方、sbt パッケージはそうします。これは、おそらく Jestan Nirojan が使用したものです。

github で sbt アセンブリ プラグイン プロジェクトの問題を作成しました。修正される可能性を高めるために、コメントを追加することをお勧めします。

これを見る

于 2013-04-29T15:18:30.127 に答える