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

2018-11-18 20:24:19 +08:00
 Event

rt

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

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

2188 次点击
所在节点    Java
4 条回复
1010543618
2018-11-18 22:07:39 +08:00
发送一个类?
Aidenboss
2018-11-18 22:14:43 +08:00
是程序运行以后才接收到 Socket 发送的类,才调用 newInstance() 的话,可能需要自定义 ClassLoader 才行。
ljzxloaf
2018-11-19 03:04:30 +08:00
是通过传输 class 的字节码构成这个类的吗?如果是的话需要将这个类放入当前线程上下文的 Classloader,如果跑在 tomcat 上的话一般是 WebAppClassLoader,但是因为 Classloader 的 defineClass 方法是私有方法,不能直接加载这个类的字节数组,你反射调一下就可以了。
frienmo
2018-11-22 22:46:13 +08:00
你强调了 发送一个类 包含内部类。
没记错的话内部类也会变成一个 Outter$Inner.class,所以应该传 Outter.class 和 Outter$Inner.class 两个类?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/509020

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX