我在路径上有一个带有本机方法的类文件,而它的依赖项位于不同包中的单独路径上。我的树看起来像:
[build/classes]$ tree -L 3
.
├── main
│ └── com
│ └── foo
└── test
└── com
└── foo
我的依赖项位于主路径上,而我尝试为其构建标头的类文件位于测试路径上。这些文件看起来像:
// FooTest.java: class file will go to build/classes/test/com/foo/
package com.foo;
import com.foo.bar.Depend;
public class FooTest {
private native void baz(int i);
public FooTest() {
Depend depend = new Depend();
baz(depend.get());
}
}
// Depend.java: class file will go to build/classes/main/com/foo/bar
package com.foo.bar;
public class Depend {
public int get() { return 3; }
}
现在回到build/classes
目录。让我们调用我们的 javah 命令:
[build/classes]$ javah -classpath "test/" com.foo.FooTest
Error: Class com.foo.bar.Depend could not be found.
该死。它找不到依赖项。不应该感到惊讶:它不在路上!我们将使用类路径分隔符;
来发送多个搜索路径。
[build/classes]$ javah -classpath "test/;main/" com.foo.FooTest
Error: Could not find class file for 'com.foo.FooTest'.
什么?它现在在目录中找不到类文件test
。翻转路径的顺序?开启详细?写完整路径?
[build/classes]$ javah -verbose -classpath "main/;test/" com.foo.FooTest
Error: Could not find class file for 'com.foo.FooTest'.
[build/classes]$ javah -verbose -classpath "/the_full_path/main/;/the_full_path/test/" com.foo.FooTest
Error: Could not find class file for 'com.foo.FooTest'.
爆破!我尝试了所有的组合!详细没有给我任何东西,我得到了同样的错误。我已经阅读了很多类似的问题,包括这个高度投票的答案,但还没有找到适合我的解决方案。