我有一个C二进制文件,通过JNI调用Java.我将CLASSPATH设置为somedir/*以获取somedir中的所有jar.
当我运行二进制文件时,找不到所需的类定义.我跑的时候
java that.class's.name
Run Code Online (Sandbox Code Playgroud)
从同一命令行,成功找到该类.如果我明确地将somedir /中的所有jar添加到类路径中,一切都很好,但这导致了一个很长的类路径,我想避免.
通过JNI执行的JVM是否支持类路径的通配符扩展?可以这样做吗?
代码是libhdfs测试代码.
int main(int argc, char **argv)
{
hdfsFS fs = hdfsConnect("hdfs://labossrv14", 9000);
const char* writePath = "/libhdfs_test.txt";
hdfsFile writeFile = hdfsOpenFile(fs, writePath, O_WRONLY|O_CREAT, 0, 0, 0);
if(!writeFile)
{
fprintf(stderr, "Failed to open %s for writing!\n", writePath);
exit(-1);
}
char* buffer = "Hello, libhdfs!";
tSize num_written_bytes = hdfsWrite(fs, writeFile, (void*)buffer, strlen(buffer)+1);
if (hdfsFlush(fs, writeFile))
{
fprintf(stderr, "Failed to 'flush' %s\n", writePath);
exit(-1);
}
hdfsCloseFile(fs, writeFile);
}
Run Code Online (Sandbox Code Playgroud)
我付出了很多努力来成功编译这个代码,但是当我运行程序时它不起作用.错误信息如下.
loadFileSystems error:
(unable to get stack trace for java.lang.NoClassDefFoundError exception: ExceptionUtils::getStackTrace error.)
hdfsBuilderConnect(forceNewInstance=0, nn=labossrv14, …Run Code Online (Sandbox Code Playgroud)