java - 在 Wicket 上混合 Scala 和 Java

标签 java maven-2 scala wicket

我们使用 Wicket 作为我们的前端框架,到目前为止我们的应用程序是纯 Java 的。然而,我想开始在我们的一些新类中使用一些 Scala。旧代码将保留在 Java 中。

安装 maven-scala-plugin、scala-library、scalatest 依赖项并下载它们后,我不得不面对我不知道如何在 Wicket 中将 Scala 与 Java 混合的问题。到目前为止,我只在 Wicket 中看到过有关纯 Java 或纯 Scala 项目的教程。

在 WebApplication 的扩展类中,您有诸如

public Class<? extends Page> getHomePage() {
    return HomePage.class;
}

如果你使用 Scala,你会得到类似的东西

def getHomePage = classOf[HomePage]

如果我有一个名为 HomePageScala.scala 的 Scala 类,我如何从 java 代码中调用它?

如何使用调用 Scala 类的 Java 代码创建 BookmarkablePageLink? 例如

add(new BookmarkablePageLink<HomePageScala>("homePageScala", HomePageScala.class));

这实际上可能吗,还是我必须使用 100% java 或 100% scala?

提前非常感谢您!

最佳答案

可以在 Scala 和 Java 代码之间进行交叉引用。如果你使用maven,试试这个配置。使用 Scala 2.8.0 进行测试:

 <plugins>
        <plugin>
            <groupId>org.scala-tools</groupId>
            <artifactId>maven-scala-plugin</artifactId>
            <version>2.14.1</version>
            <executions>
                <execution>
                    <id>compile</id>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                    <phase>compile</phase>
                </execution>
                <execution>
                    <id>test-compile</id>
                    <goals>
                        <goal>testCompile</goal>
                    </goals>
                    <phase>test-compile</phase>
                </execution>
                <execution>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <scalaVersion>${scala.version}</scalaVersion>
                <args>
                    <arg>-target:jvm-1.5</arg>
                    <!-- to support mix java/scala only -->
                    <arg>-make:transitivenocp</arg>
                    <arg>-dependencyfile</arg>
                    <arg>${project.build.directory}/.scala_dependencies</arg>
                </args>
            </configuration>
        </plugin>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <compilerVersion>1.6</compilerVersion>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>

我不确定,但认为没有 Maven,你应该尝试这个 scalac 参数:

-make:transitivenocp

关于java - 在 Wicket 上混合 Scala 和 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4109854/

相关文章:

java - 在项目 xxx 的构建路径中检测到循环 - 构建路径问题

scala - 使用 Scala 和 Dispatch 进行 HTTPS POST

Scala:如何在 repl 中安装一个包系统范围?

java - Canvas 中的背景(图像),同时在顶部绘制路径

java - 在 map 中查找不在 pojo 列表中的值

java - 在 Java 中“释放”一个正在监听的 ServerSocket

maven-2 - 如何在父模块中提供站点资源供所有子模块使用?

maven-2 - 如何从父 pom 部署多个对等 webapp

list - 将 Scala 列表转换为以索引为键的映射

java - OpenGL- android 中 glClipPlanef 的问题