java - 如何在 SBT 中创建拼图模块?
问题描述
我想使用 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 Scala:2.12.4 SBT:1.1.6
解决方案
一般来说,scala 似乎并不完全支持 Java9+,至少它们的兼容性说明是这样的。
从 Scala 2.12.6 和 2.11.12 开始,JDK 9+ 支持不完整。值得注意的是,scalac 不会强制执行 Java 平台模块系统的限制,这意味着类型检查的代码可能会在运行时引发链接错误。Scala 2.13.x 将为此提供基本支持,但可能仅在基于 Java 11 构建的 nightlies 中提供。
您可以关注JDK 9+和Java 11 测试的支持功能以获取进一步的更新。
推荐阅读
- git - 之前将开发合并到我的功能分支后,你能 git 交互式 rebase squash 吗?
- php - Magento 报告问题 - 只有过滤器选项可用,没有表格显示
- java - 如何使用mapstruct将对象映射为字段?
- oracle - 需要更新 sqlplus 中的泰米尔语字体
- oracle - 如何使用 PL/SQL 代码在 Apex Oracle 中显示十进制值
- python - pip 在安装兼容的包版本时是否考虑到实际的 Python 版本?
- android - 在 Espresso 中模拟对象
- android - 删除 kotlin android 中浮点值的科学记数法格式
- java - getFramesAtIndex() 中的 MediaMetadataRetriever.BitmapParams 参数是什么?
- php - PHP邮件功能错误客户端未通过MAIL FROM期间发送匿名邮件的身份验证