java - Java 包和模块的允许名称

标签 java migration java-platform-module-system

我想将我的旧 java 代码迁移到 java9 模块。例如。在类路径中有一个名为 org.eclipse.jface.3.7.0.v20110928.jar 的 jar 文件。在类路径中,它被引用为 org.eclipse.jface_3.7.0.v20110928.jar。 jface 之后的文件名中的点在类路径中被替换为下划线。不知道它是如何工作的。也许是因为 .3.7.0。不是合法的 Java 标识符。

但是现在我想把它作为一个模块来使用。我收到模块名称错误。 “.7.0”部分。不允许,因为数字不能是 java 标识符。下划线是java9中的保留字。

首先,我为模块使用了在类路径中看到的相同名称 (org.eclipse.jface_3.7.0.v20110928.jar)。但这是一个错误。我尝试使用文件名 (org.eclipse.jface.3.7.0.v20110928.jar),同样的错误。

module iDEpdf.src 
{
    exports org.idepdf.ri.common.utility.annotation;
    ...
    requires org.eclipse.jface.3.7.0.v20110928;
}

'.3.7.0'被标记,错误是'illegal token'。当我使用 org.eclipse.jface_3.7.0.v20110928 时,标记的子字符串是“.7.0”。错误是一样的。

如果可能的话,我不想重命名 jar 文件。我不明白它对类路径是如何工作的,也不明白为什么它对模块不起作用。我该如何处理?

最佳答案

我认为您使用的是一个非常古老的 JFace 库。您可能需要更新或添加 Automatic-Module-Name

由于该库还没有模块描述符,因此该模块未被识别为有效。

我的问题也是:为什么在将库更新到最新版本之前先迁移到模块系统?

另请参阅 this questionthis one .

关于java - Java 包和模块的允许名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57613853/

相关文章:

java - 使用 Jlink 在一个平台上为另一个平台创建 Java 运行时镜像

php - 在 Laravel 迁移中重命名现有列的错误

svn - VSS 到 SVN 的迁移;工具建议?

java - 无法为 Java 9 中自动生成的模块名称派生模块描述符?

resources - 为什么opens不提供全局模块系统资源?

version-control - clearcase 强制执行 : how to branch?

java - 在 JavaFX 中显示圆数组

java - 为什么将 ResultSetType 从 TYPE_SCROLL_INSENSITIVE 更改为 TYPE_FORWARD_ONLY 会更改 SQL 查询的结果?

java - Java 中的 StringObject.ReplaceAll 方法中自动删除“\”

java - 使用 add 运算符理解 java 字符串