Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试在servlet上运行维护任务时获取NoClassDefFoundError_Java_Classpath - Fatal编程技术网

Java 尝试在servlet上运行维护任务时获取NoClassDefFoundError

Java 尝试在servlet上运行维护任务时获取NoClassDefFoundError,java,classpath,Java,Classpath,我有一个运行良好的servlet应用程序,不想将一些类复制到单独的项目中,我在其中开发了一个命令行维护工具。但是,在尝试运行此工具时,我遇到一个NoClassDefFoundError: [juhani@hadoop01 WEB-INF]$ java -classpath .:/usr/share/tomcat5/webapps/xyz/WEB-INF/classes/ xyz.logger.FileToHBaseTransfer Exception in thread "main" java.

我有一个运行良好的servlet应用程序,不想将一些类复制到单独的项目中,我在其中开发了一个命令行维护工具。但是,在尝试运行此工具时,我遇到一个NoClassDefFoundError:

[juhani@hadoop01 WEB-INF]$ java -classpath .:/usr/share/tomcat5/webapps/xyz/WEB-INF/classes/ xyz.logger.FileToHBaseTransfer
Exception in thread "main" java.lang.NoClassDefFoundError: xyz/logger/FileToHBaseTransfer
Caused by: java.lang.ClassNotFoundException: xyz.logger.FileToHBaseTransfer
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: xyz.logger.FileToHBaseTransfer.  Program will exit.
一些健康检查: 我已经重新检查了文档中的文件位置,没有发现任何明显的错误,尽管我确信这是类似于这些内容的。在这个问题上被难住了一段时间,似乎已经停止取得进展,因此,如果能找到原因,我们将不胜感激

进口 (以及我正在使用的完整的未扩展类路径。我只是将其删除到最小的相关部分,以避免与其他问题混合): 任何其他依赖项都在同一个包中

package xyz.logger;

import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTablePool;


java -classpath .:/usr/share/tomcat5/webapps/xyz/WEB-INF/classes/:/usr/lib/hbase/:/usr/lib/hadoop/:/etc/hbase/conf/:/etc/hadoop/conf/ xyz.logger.FileToHBaseTransfer
可能相关吗? 如果我尝试使用正确的claasspath运行javap,它将找不到类:

[juhani@hadoop01 WEB-INF]$ javap -classpath ./classes/ xyz.logger.FileToHBaseTransfer
ERROR:Could not find xyz.logger.FileToHBaseTransfer
仅验证类格式,它实际上是1.6()


好吧,这真的很愚蠢,但是在eclipse调试器中运行并仔细比较了巨大的类路径之后,结果证明,整个过程中出现的问题是我将类名写成了HBase,而不是HBase


希望这对其他人是一个警告,我所做的随机诊断可能会帮助其他人解决相关问题

哪些类是
FileToHbaseTransfer
依赖的?我想这并不仅仅是
java.lang.Object
。将导入添加到post
[juhani@hadoop01 WEB-INF]$ javap -classpath ./classes/ xyz.logger.FileToHBaseTransfer
ERROR:Could not find xyz.logger.FileToHBaseTransfer
[juhani@hadoop01 ~]$ hexdump /usr/share/tomcat5/webapps/xyz/WEB-INF/classes/xyz/logger/FileToHbaseTransfer.class 
0000000 feca beba 0000 3200 8700 0007 0102 2600