Java包和模块的允许名称

时间:2019-08-22 16:45:30

标签: java migration jigsaw

我想将旧的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”,错误为“非法令牌”。当我使用org.eclipse.jface_3.7.0.v20110928时,标记的子字符串为“ .7.0”。错误是一样的。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

另请参阅this questionthis one