Event
V2EX  ›  Java

商业程序开发遇到一个很奇葩的问题

  •  
  •   Event · Nov 18, 2018 · 2791 views
    This topic created in 2807 days ago, the information mentioned may be changed or developed.

    rt

    客户端请求授权后服务端 Socket 发送一个类给客户端下载 但问题是该类还有一个内部类。如果直接 newInstance 就会出现 NoClassDefFoundError 的情况

    这可如何解决呢。。看了一下 没有相关的预加载的方法

    4 replies    2018-11-22 22:46:13 +08:00
    1010543618
        1
    1010543618  
       Nov 18, 2018
    发送一个类?
    Aidenboss
        2
    Aidenboss  
       Nov 18, 2018
    是程序运行以后才接收到 Socket 发送的类,才调用 newInstance() 的话,可能需要自定义 ClassLoader 才行。
    ljzxloaf
        3
    ljzxloaf  
       Nov 19, 2018
    是通过传输 class 的字节码构成这个类的吗?如果是的话需要将这个类放入当前线程上下文的 Classloader,如果跑在 tomcat 上的话一般是 WebAppClassLoader,但是因为 Classloader 的 defineClass 方法是私有方法,不能直接加载这个类的字节数组,你反射调一下就可以了。
    frienmo
        4
    frienmo  
       Nov 22, 2018
    你强调了 发送一个类 包含内部类。
    没记错的话内部类也会变成一个 Outter$Inner.class,所以应该传 Outter.class 和 Outter$Inner.class 两个类?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2966 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 14:06 · PVG 22:06 · LAX 07:06 · JFK 10:06
    ♥ Do have faith in what you're doing.