2011-11-09 10 views

答えて

14

これは完全に可能です。たとえばrunning a maven scala projectを参照してください。 ScalaはJavaバイトコードにコンパイルされるので、JVMは基礎となる実装言語を認識していません。

scalacを使用してScalaソースをコンパイルした後は、.class個のファイルが後でJARにパッケージ化されます。そして、あなたは、単に使用してそれらを実行することができます

$ java -cp "your.jar:scala-library.jar" com.example.Main 

注意をすることをあなたは CLASSPATHにscala-library.jarを含める(現在はそれがほとんど9 MIBです...)とmainメソッドを含むクラスを指定する必要があります。

15

ビルドにsbtを使用する場合は、one-jarプラグインの1つを使用できます。彼らはすべての依存関係を1つの大きなjarファイル(すべてのscala.jarファイルを含む)に入れます。つまり、1つのjarファイルのみが必要で、すべての依存ファイルを管理する必要はありません。 (主にhttps://github.com/sbt/sbt-assemblyからコピー)SBT-アセンブリとの例として

プロジェクト/ 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 
+1

このURLは機能しません。 https://github.com/sbt/sbt-assemblyを試してください。 –

5

Fabianの答えの代わりに、Mavenを使用している場合は、アセンブリプラグインを使用できます。 (それはあなたのDEPSでの場合)Scalaの-library.jarを含め、すべてのあなたのDEPSをパッケージ化しますが、そう開梱すべてのクラスで平坦化しないだろう

<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> 

:ような何か。これは、実行可能な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ファイルでのスイングアプリケーションをパッケージ化するために
1

、私のために働いたソリューションは、通常のjarファイル(非実行)としての私のプロジェクトをエクスポートし、更新することでしたjarファイルのマニフェストへ:

  1. scala-library.jar scala-swingを追加します。

    META-INF/MANIFEST.MF 
    

    追加:

  2. パスへのjarパッケージには、あなたは、次のパスにjarファイル内のマニフェストファイルを(あなたがたとえば7Zで開くことができることを)見つけることができるメインクラス

を示していますマニフェストの末尾にある次の行:

Main-Class: myPackage.myMainClass 
Class-Path: scala-library.jar scala-swing.jar 

これで、jarファイルをクリックすると正しく実行されます。

注:マニフェストのカスタマイズの詳細については、 http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.htmlを参照してください。

0

私の解決策は、maven - > create scala runnable 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> 
関連する問題