2

Scala プロジェクトがあり、それを jar としてエクスポートしたいと考えています。

*1. まずはエントリポイントとしてプロジェクトのJavaクラスを作ってみました

public class JMain {
 public static void main(String[] args) {
  System.out.println("Java main calling Scala main");
  SMain.main(new String[] {""}); //SMain.main is the actual *main*

これは Eclipse から起動すると問題なく動作しましたが、jar としてエクスポートすると 18 個ほどの例外が発生します。私は今、Eclipseがこれを起動する「環境」を複製する方法を知っています.Scalaがすでにシステムにあるという事実に依存していると確信しています.すべてがそこに詰め込まれた自己完結型のjarが必要です.

*2. 私の 2 回目の試みは、ここでlachが提案したことを試すことでした。Eclipseから Scala プロジェクトをデプロイする方法は? すなわち:

public class JMain {
 public static void main(String[] args) {
  System.out.println("Java Main");
  List<String> argList = new ArrayList<String>();
  argList.add("fully.qualified.ClassName"); //???
  for (String s : args) argList.add(s);
  scala.tools.nsc.MainGenericRunner.main(argList.toArray(new String[0]));

今回は、有名なNoClassDefFoundErrorで始まる 6 つほどの例外しか与えませんが、Eclipse からは実行されません。私は完全に取得していないと感じています.qualified.ClassNameが正しくありません。*3. メインのScala クラスが "Dis.scala" と呼ばれ、パッケージ "pack" にある場合、この full.qualified.ClassName は "pack.Dis" ではないでしょか?

私は Jre 1.6 と Scala 2.9.2 を使用しています。

PS私はAnt、Maven、またはSbtに精通していません。私は自分の Scala プロジェクトを混乱させたいだけです。

4

2 に答える 2

10

1. scala プロジェクトを作成します。 2. Wrapper Java プロジェクトを作成します。 3. scala-library.jar を Java プロジェクトのビルド パスに追加します。

残りは私がやったことと似ているので、追加で必要なのは3番目のステップだけです. 次に、喜んで使用できます: java - jar file.jar

編集: Scala - Eclipse IDE を使用して、別の Java プロジェクトで使用できる Scala/コードを含む JAR ファイルを作成する方法。

  1. 新しい Scala プロジェクトを作成し、main メソッドをエントリ ポイントとしてオブジェクトを定義します。
  2. ここで、新しい Java プロジェクトを作成し、Scala プロジェクトを新しいビルドパスに追加します。さらに、scala-library.jar を Java プロジェクトに追加します。
  3. ここで、scala lib からエントリ ポイント クラスを呼び出す Java プロジェクトに Wrapper クラスを作成します。ラッパー クラスを実行して Eclipse 実行構成を作成し、scala プロジェクトを呼び出せるかどうかをテストします。
  4. Export->Java->Runnable JAR file, Wizard をラッパー プロジェクトで使用します。Eclipse 実行構成は、JAR へのエントリポイントとして使用されます。必要に応じて、必要なライブラリを生成された JAR に抽出するか、必要なライブラリを生成された JAR にパッケージ化します。

最後に、次のように使用できる完全にパッケージ化された JAR を取得します。

Java - jar ラップされた.jar

于 2012-07-10T14:13:22.543 に答える