You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Artifactory-oss-6.23.42搭配Java17启动报ClassNotFoundException求助

问题原因

这个报错的核心原因是Artifactory 6.23.42的证书生成逻辑依赖了Java的内部API类com.sun.security.cert.internal.x509.X509V1CertImpl,而从Java 9开始,Sun/Oracle的这类内部API就被逐步移除、隐藏,Java 17更是彻底禁用了对该类的访问,导致启动时无法自动生成证书。

解决方案

1. 降级Java版本(推荐)

Artifactory 6.x系列官方仅支持Java 8和Java 11,完全不兼容Java 17。直接将Java环境切换为Java 8或11,就能解决这个兼容性问题,这也是最稳妥的方案。

2. 临时兼容Java 17(不推荐生产使用)

如果必须使用Java 17,可以尝试通过添加JVM启动参数,强制允许Artifactory访问已被隐藏的内部API:

  • 找到Artifactory的启动脚本(比如artifactory.sh或artifactory.bat)
  • 在JAVA_OPTS参数中添加以下内容:
--add-exports java.base/sun.security.cert=ALL-UNNAMED
--add-exports java.base/com.sun.security.cert.internal.x509=ALL-UNNAMED

这种方式属于临时 workaround,后续可能出现其他未预见的兼容性问题,不建议在生产环境使用。

3. 手动配置SSL证书

跳过Artifactory自动生成证书的步骤,手动生成并配置证书:

  • 使用keytool或openssl生成自签SSL证书和私钥,例如:
keytool -genkeypair -alias artifactory -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore artifactory.p12 -validity 3650
  • 找到Artifactory的配置文件$ARTIFACTORY_HOME/etc/artifactory.config.xml
  • 修改<ssl>节点,指定已生成的证书路径、密钥库密码等信息,示例:
<ssl>
    <keystorePath>/path/to/artifactory.p12</keystorePath>
    <keystorePassword>your-keystore-password</keystorePassword>
    <keystoreType>PKCS12</keystoreType>
    <certificatePassword>your-cert-password</certificatePassword>
</ssl>
  • 保存配置后重新启动Artifactory

内容的提问来源于stack exchange,提问作者fatherazrael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:45:00