0

我在路径上有一个带有本机方法的类文件,而它的依赖项位于不同包中的单独路径上。我的树看起来像:

[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'.

爆破!我尝试了所有的组合!详细没有给我任何东西,我得到了同样的错误。我已经阅读了很多类似的问题,包括这个高度投票的答案,但还没有找到适合我的解决方案。

4

0 回答 0