1

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

错误:找不到“org.sqlite.core.NativeDB”的类文件

我想我有非常明显的错误,但我真的没有看到任何......所以,我需要从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

我得到的错误:

错误:找不到“org.sqlite.core.NativeDB”的类文件

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

package org.sqlite.core;
4

1 回答 1

1

我发现了这个问题(这真的很明显而且很愚蠢)。

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

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

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

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

于 2021-07-28T13:02:03.147 回答