当前位置: 首页 > 面试题库 >

如何检测Java系统类?

沈淇
2023-03-14
问题内容

我试图将自定义行为添加到系统类(FileInputStream /
FileOutputStream)。我用以下转换方法编写了自定义ClassFileTransformer:

public byte[] transform(ClassLoader arg0, String arg1, Class arg2, ProtectionDomain arg3, byte[] arg4) throws IllegalClassFormatException {
    System.out.println("class name: " + arg1);
    return arg4;
}

当我运行示例程序时:

public static void main(String[] args) throws Exception {
    new FileOutputStream("file");
}

我看到没有系统类没有传递给转换。

有什么办法可以修改系统类?提前致谢!


问题答案:

在调用pre-
main方法并添加ClassFileTransformer之前,已经加载了一些(不是全部)系统类。如果您还想转换这些类,则可以在添加ClassFileTransformer之后调用类似Instrumentation#retransformClasses(Instrumentation#getAllLoadedClasses())之类的方法。请注意,您必须使用Instrumentation#addTransformer(ClassFileTransformer,true)来指示您的转换器支持类的重新转换。



 类似资料:
  • 本文向大家介绍C#如何检测操作系统版本,包括了C#如何检测操作系统版本的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C#检测操作系统版本的方法,供大家参考,具体内容如下 我们通过System.Environment.OSVersion.Version获得操作系统的版本号,然后再根据版本号进行判断操作系统是什么版本。 Version 类的属性 参考于:https://msdn.mic

  • 问题内容: 相对较新。似乎微不足道,但我不知道如何检测操作系统版本。我知道我可以使用并获得平台和体系结构,但是说我知道我在linux上,但是我想确定我是否在RH6上,而在RH7上,等等。 问题答案: 因此,至少在Linux上,软件包中确实存在这种晦涩的方法。它填充的结构有点笨拙,没有文档说明,但是您可以了解它的要点: 顺便说一句,这在操场上不起作用,可能是由于沙箱的限制,但是在Linux上起作用。

  • 问题内容: 我已经做了一些研究,但这个问题已经提出,但不是我打算的那样。我正在为QR登陆的客户端构建页面,这是一个下载应用程序的地方。因此,他不必在页面上打印2个QR码,我想检测当前的操作系统(Apple / Android / Other [不支持])并根据该值修改我的元素。 我已经看过脚本“ detectmobilebrowsers”,它的目的只是告诉用户是否完全可以移动,而我想弄清楚用户正在

  • 问题内容: 当时间服务器中的系统时间有更新或由于DST更改时,是否有办法得到通知?我正在执行API /系统调用或等效操作。 我的工作之一是在不使用SQL的情况下,将类似于SQL NOW()的值的生成优化为一个小时的粒度。 问题答案: 您可以使用timerfd_create(2)创建一个计时器,然后在设置它时用选项标记它。将其设置为将来不可行的时间,然后在其上进行阻止(使用轮询/选择等)-如果系统时

  • 问题内容: 我正在研究需要检测系统关闭的应用程序。但是,我没有找到任何可靠的方式来接收此事件的通知。 我知道在关机时,我的应用会收到一个信号,然后是。我想知道是否有任何方法可以查询a 是否 为关机序列的一部分 ? 有谁知道是否有一种以编程方式查询(C API)的方法吗? 据我所知,系统没有提供任何其他方法来查询即将发生的关机。如果确实如此,那也将解决我的问题。我也一直在尝试,但是更改似乎是瞬时的,

  • 问题内容: 我需要检测Java中的操作系统名称和版本。我可以做到的 但是问题在于这是不可靠的。有时它返回错误的信息,并且我无法检测到所有操作系统,除了最流行的Windows,MacOS,Linux等,在64位操作系统的情况下,甚至会提供错误的信息。我需要检测具有任何规格的任何操作系统。我无法为此找到合适的解决方案。 也许我可以用JavaScript做到这一点?如果在Java中是不可能的,请告诉我如