Javah Error: Could not find class file for package.name

Javah Error: Could not find class file for package.name

我正在尝试为 JNI (Linux) 生成 C header 文件。我阅读了关于 javah 的文档和问题,但我仍然遇到相同的错误

Error: Could not find class file for 'org.sqlite.core.NativeDB'

我想我有一个非常明显的错误,但我真的没有看到任何...所以,我需要 生成 header 文件=]NativeDB.class 路径为:

/u/users/maas/user123/sqlite/sqlite-jdbc-3.21.0/target/common-lib/org/sqlite/core/NativeDB.class

我转到 common-lib 文件夹并从以下路径调用 javah

/u/users/maas/user123/sqlite/sqlite-jdbc-3.21.0/target/common-lib/

我试过的命令:

javah -classpath "/u/users/maas/user123/sqlite/sqlite-jdbc-3.21.0/target/common-lib/org/sqlite/core" org.sqlite.core.NativeDB
javah org.sqlite.core.NativeDB

我得到的错误:

Error: Could not find class file for 'org.sqlite.core.NativeDB'

我在我提到的正确目录中看到 NativeDB.class 文件。在 NativeDB.java 中(与 NativeDB.class 不在同一个文件夹中,如果它很重要)有一个包路径:

package org.sqlite.core;

我发现了这个问题(非常明显和愚蠢)。

我在问题中写的命令是正确的。我正在使用 USS(UNIX 系统服务)进行 Z/OS 和 ftp 传输文件。我没有检查我是否通过 ftp 不是二进制格式发送了 .class 文件。由于这个原因,Java 由于编码错误而无法找到 classes。

您只需要在 ftp 中打开二进制模式,如下所示:

ftp server.name.com
..login...
bi
mput *class

bi 命令启用二进制模式。 .class 文件预期采用这种格式。