Javassist ClassPool 类的 get 方法针对 java.lang.String 抛出 NotFoundException

标签 java android classnotfoundexception javassist

我正在 Android 中使用 JavaAssist 来创建动态类以达到某种目的。 ClassPool get() 方法在尝试获取 java.lang.String 时抛出 NotFoundException

它在 JUnit 测试中运行良好。但如果我在设备中运行相同的内容,它会抛出异常。

这是我正在尝试的代码 fragment 。

ClassPool classPool = ClassPool.getDefault();
CtClass ctClass=classPool.get("java.lang.String");

第二行抛出异常。

请帮忙。

最佳答案

尝试将字符串“java.lang.String”更改为“Ljava.lang.String”或“Ljava.lang.String;”它应该有效。

由于您正在加载嵌入到 Java 中的类,因此您的机器可能无法识别字符串的标准名称,但需要 JVM 内部使用的名称来识别此特定对象。

要了解有关“L”主题的更多信息,我建议您阅读 JVM specs特别关注 chapter 4.3而且也很容易理解,只需阅读这篇文章 question 就可以了。它讨论了数组,但也包含了这个符号。

关于Javassist ClassPool 类的 get 方法针对 java.lang.String 抛出 NotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41805663/

相关文章:

java - 使用 maven 在父目标目录中自动创建 JAR 文件

java - 当我添加绘画方法时,JFrame 窗口变黑

java - 切换 Activity/在 Activity 之间传递数据

android - 更改 Android App 的默认字体

java - 如何解决ClassNotFoundException引起的NoClassDefFoundError?

java - 在终端中运行java类失败

java - 如何使用top linux计算java的实际内存使用情况?

java - Android Studio 0.5.7 不会在操作栏中显示按钮

android-animation - 使用 Object AnimatorAndorid 进行对角线平移

servlets - java.lang.ClassNotFoundException : HelloServlet at org. apache.catalina.loader.WebappClassLoader.loadClass