Java程序迁移至Fedora后报Prohibited package name错误求助
解决Java迁移到Fedora后出现的Prohibited package name错误
问题分析
你遇到的java.lang.SecurityException: Prohibited package name: java.time错误,根源出在执行命令里手动将rt.jar添加到了类路径(classpath)中。
解决方案
直接去掉命令里的:/usr/java/jre1.8.0_411/lib/rt.jar部分,执行以下命令即可:
java Main
如果你的代码需要额外依赖,仅添加自定义的jar包或目录即可,不要将JRE自带的rt.jar加入classpath——JVM会自动处理系统核心类的加载,无需手动指定。
原因解释
Java的系统核心类(比如java.time下的类)由**启动类加载器(Bootstrap ClassLoader)**负责加载,这类类所在的java.开头包被JVM视为受保护的系统包,不允许用户通过自定义类路径加载这些包下的类。当你手动把rt.jar加到classpath时,会导致系统类被应用类加载器尝试加载,触发JVM的安全检查,从而抛出该异常。
你的代码本身没有问题,Windows上能运行是因为Windows下JVM对这类错误的兼容性处理不同,但手动添加rt.jar的做法本身不符合Java规范。
内容的提问来源于stack exchange,提问作者Asheesh Sinha
相关产品推荐
相关产品推荐

