0

約 6 ~ 7 時間続けて、誰かが私が抱えている問題を解決してくれることを願っています。基本的に、Scala と Java コードの両方を含む Eclipse プラグインを開発しようとしています。残念ながら、プラグインをビルドしようとすると、次のようなエラーが発生します。


ファイル: @dot.log 04-04-12 19:02:49 CEST Eclipse Compiler for Java(TM) 0.A76_R36x, 3.6.2, Copyright IBM Corp 2000, 2010. 無断複写・転載を禁じます。

  1. C:\Documents and Settings\b96274\workspace_scala_akka\TestScala\src\testscala\Activator.java のエラー (16 行目) ScalaTest t = null; ^^^^^^^^^^ ScalaTest は型に解決できません

1 問題 (1 エラー)

私が定義した2つのクラスは次のとおりです。

「Activator.java」

package testscala;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class Activator implements BundleActivator {

private static BundleContext context;

static BundleContext getContext() {
    return context;
}

public void start(BundleContext bundleContext) throws Exception {
    Activator.context = bundleContext;
    ScalaTest t = null;
}

public void stop(BundleContext bundleContext) throws Exception {
    Activator.context = null;
}
}

「ScalaTest.scala」パッケージ

class ScalaTest {
  val t = "whatever"
}

最初にプラグイン プロジェクトとしてプラグインを作成し、その後に Scala の性質を追加します。私が使用した scala の PDE ビルダーに通知するには: http://www.michel-kraemer.com/scala-projects-with-eclipse-pde-build-2 Michel Kraemers の非常に優れたビルド ファイル。

私のbuild.propertiesファイルは次のとおりです。

ソース.. = src/

出力.. = ビン/

bin.includes = META-INF/,\

.

customBuildCallbacks=customBuildCallbacks.xml

customBuildCallbacks.inheritall=true

また、customBuildCallbacks.xml はプロジェクトの下部に格納されています。

Scala IDE プラグインの nightly および stable ビルド ブランチを試してみました。また、Eclipse 3.6.2 および 3.7.2 の新しいバージョンも試されました。このセットアップで以前にプラグインを動作させたことがありますが、残念ながら、いくつかの (基本的な?) ものを忘れていたようです。

「ワークスペースでコンパイルされたクラス ファイルを使用する」という回避策を使用できますが、これを使用するには PDE ビルダーが必要です。もちろん、必要に応じて詳細を説明します。

私の推測では、コンパイルされた Scala ファイルは最初に後でコンパイルされるため、Java コンパイラーはそれらを見ることができないと思いますが、それは推測にすぎません。

前もって感謝します。よろしく ステファン・エトルップ

4

2 に答える 2

0

Javaコンパイラはscalaファイルを理解しませんが、scalaコンパイラjavaファイルを解析/理解します。ただし、scalaコンパイラはJavaファイルをコンパイルせず、 scalaファイルのみをコンパイルします。したがって、Java / Scalaプラグインを組み合わせてコンパイルするには、通常、次のことを行う必要があります。

1)Javaソースツリーを含むscalaをコンパイルします。これにより、scalaファイルの.classファイルが生成されます。2)上記で生成された.classファイルを含むJavaをコンパイルします。これにより、Javaファイルの.classファイルが生成されます。Scalaクラスに依存するJavaはすべて、正しくコンパイルする必要があります。

したがって、最初にscalaコンパイルを実行します。場合によっては、Javaコンパイラーによって生成されたクラスファイルを使用して、scalaを再度コンパイルするために、3番目のステップを追加する必要があります。しかし、これはまれです。

アリでこれを行う方法がわからないのではないかと思いますが、それは可能だと確信しています。

scala-ideの場合、これはさらに簡単です。[ウィンドウ]->[設定]->[スカラ]->[コンパイラ]タブのビルドマネージャにオプションがあり、コンパイル順序(Mixed、JavaThenScala、ScalaThenJava)を選択できます。これも試してみてください。

于 2012-04-06T18:23:25.100 に答える