【发布时间】:2018-03-28 09:35:36
【问题描述】:
我有 jdk-10_linux-x64_bin.tar.gz。我已经解压了这个文件。
我想修改 JDK 文件夹的内容,这样当我使用 javac bin 文件编译 java 代码时,当 java 代码包含对任何其他包的引用时(例如java.io、java.util、..etc),而不是“java.lang.*”。我只想删除除“java.lang”包之外的所有包。
即使 java 文件尝试在运行时(使用类加载器)获取包,类也不应该可用。所以我只想删除“java.lang”包以外的其他包。
我试图在 JDK 文件夹中找到其他包,但我很困惑。我无法通过搜索谷歌直接找到任何解决方案。我也不知道删除其他包是否会导致一些依赖错误。
有人试过修改JDK文件夹内容吗?
【问题讨论】:
-
你的实际目标是什么?
-
您可能需要创建自己的类加载器
-
@Stultuske 我将编译一个从用户那里收集的 java 代码。我不应该允许用户使用“java.lang”以外的任何其他包
-
@AniketSahrawat 使用自定义类加载器是一项昂贵的操作吗?因为我将为每个请求执行这个 javac 命令。我也可以使用我自己的类加载器防止在运行时加载类吗?
-
一定要检查 java.lang 中不需要的类,否则人们可以使用 ClassLoader 并通过动态加载新类来绕过您设置的任何限制。 docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html
标签: java