Nat*_*n W 2 java reflection protocol-buffers classnotfoundexception
我经常使用protobuf。但是今天,当我尝试在生成的 protobuf 类上使用反射时,我得到了一个 class not found 异常。(我知道这不是一个普通的 protobuf 用例)。该类正被其他方法在同一个文件中使用,并且它的编译和运行没有问题。
import com.foo.protobuf.Foo.Bar;
...
void method1() {
Bar.Builder bld = Bar.newBuilder();
...
}
void method2(String clsName) {
// clsName = "com.foo.protobuf.Foo.Bar"
Class clsBar = Class.forName(clsName); // CNF Exception here
}
Run Code Online (Sandbox Code Playgroud)
我的代码有什么问题?感谢您提供任何意见。
刚刚发现它与protobuf无关。这是关于如何引用内部类。
所有生成的 protobuf 类都是静态内部类。为了使它工作,我必须使用 '$' 而不是 '.' 表示完全限定类名的最后一部分:Class.forName("com.foo.protobuf.Foo$Bar")。
抱歉回答我自己的问题。希望它可以帮助处于相同情况的人。