java - 如何在 SBT 中创建拼图模块?

标签 java scala sbt java-11 module-info

我想使用 jlink 从 Scala 源代码为所有平台(darwin、linux、windows)创建独立的应用程序包。 jlink 似乎只适用于新的(相对)拼图模块 - 所以我需要将我的代码打包为一个模块。在 Java 世界中,通过将特殊的 module-info.java 文件放置到将成为模块的包中似乎很容易实现。

我试着跟随直觉,将这个 module-info.java 放入 src/main/java/my.package.name/module-info.java。虽然这不起作用。似乎 scalac 正在尝试像通常的 Java 文件一样读取 module-info.java(事实并非如此),因此出现错误

module-info.java:1:8: illegal start of type declaration
[error] module my.package.name {
[error]        ^

我需要做什么才能将我的 Scala 代码打包为模块?

打开 JDK:11 斯卡拉:2.12.4 SBT:1.1.6

最佳答案

一般来说,scala 似乎并不完全支持 Java9+,至少 their compatibility notes这么读。

As of Scala 2.12.6 and 2.11.12, JDK 9+ support is incomplete. Notably, scalac will not enforce the restrictions of the Java Platform Module System, which means that code that typechecks may incur linkage errors at runtime. Scala 2.13.x will provide rudimentary support for this, but likely only in nightlies built on Java 11.

可以关注Support features of JDK 9+Java 11 testing进一步更新。

关于java - 如何在 SBT 中创建拼图模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53383330/

相关文章:

scala - 使 Scala 3 中的非详尽匹配编译失败

scala - SBT:多构建依赖/聚合项目中的覆盖设置

java - 如何使用 subItem InflateException 修复 OptionsMenu

java - Servlet.service() for servlet [dispatcher] in context with path [/***] throw exception

scala - 如何使用未过滤的 netty 向响应添加 header 值,如何编写代码?

javascript - 我应该选择哪一方来测试 REST API?

java - 微服务处理来自 redis pubsub 的事件

java - Jpa、Hibernate选择查询优化

scala - Dotty中给出的如何使用?

playframework - 如何在 Play 2.3 中更改 .activator .sbt .ivy 文件夹的位置?