Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
阻止java使用某些库_Java - Fatal编程技术网

阻止java使用某些库

阻止java使用某些库,java,Java,环境:Java类编程实验室简介 如果使用了禁止类的导入,是否可以强制Java抛出异常?例如,我有一个实验室,我特别希望他们计算一些几何图形,我不希望他们只使用内置库 当前解决方案:Grep所有java文件以查找被禁止的关键字。这在事后才起作用。我希望他们的代码在编译时失败,这样他们就不会提交工作 我的理论是,他们必须让他们的主类从我提供的“项目”类扩展而来。如果可能的话,项目类会阻止对被禁止的库的访问。这对学生来说可能有点硬,但您可以通过使用maven或gradle编译项目来轻松解决这个问题。只

环境:Java类编程实验室简介

如果使用了禁止类的导入,是否可以强制Java抛出异常?例如,我有一个实验室,我特别希望他们计算一些几何图形,我不希望他们只使用内置库

当前解决方案:Grep所有java文件以查找被禁止的关键字。这在事后才起作用。我希望他们的代码在编译时失败,这样他们就不会提交工作


我的理论是,他们必须让他们的主类从我提供的“项目”类扩展而来。如果可能的话,项目类会阻止对被禁止的库的访问。

这对学生来说可能有点硬,但您可以通过使用maven或gradle编译项目来轻松解决这个问题。只需添加一个ant任务或其他任何东西来grep一些文本并使构建失败


但它迫使您使用maven或gradle进行编译。Java内置了防止类被加载的机制,即
SecurityManager
。它不会使代码无法编译,但它会在出现异常时无法运行

根据您的需要创建
SecurityManager
,并调用学生的项目。如果他们使用被禁止的库,它将抛出一个异常


参考资料:

Java9有一个。也许你可以用它来卸载被禁止的类。如果您尝试使用它们,那么您将得到一个非常严重的运行时错误。当然,如果任何Java内部依赖于它们,那么也会出现问题?然后,只需查看他们的Git分支和您的Git分支之间的差异,就可以确认他们没有更改构建文件。“事后”有什么问题?如果你告诉他们不应该使用的东西,而他们仍然使用,他们会被打坏分数,或者你不会接受这个解决方案,你会这样做吗?难道编译器不允许这样做对他们有利吗(使试验和错误更容易)?除此之外,Eclipse(以及其他IDE)还支持报告不允许导入的错误(如
com.sun….
)。或者,使用构建系统可以让您在构建过程中进行检查(例如,通过使用checkstyle或类似方法)。执行失败而非编译失败的解决方案是否有用?如果是这样的话,你可以在他们必须扩展的“project”类中使用一个自定义类加载器。这实际上非常简单。没有花任何时间就将securityManager添加到一个通用项目类,该项目类检查Swing.frame是否有类构造函数(这意味着它已导入),然后失败得很惨。