有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

虚拟机上Eclipse和Linux的java类路径问题

我在eclipse上有一些java代码,我想将其发送到运行linux命令行的虚拟机。我正在通过MapR学习HBase。com教程,它说一旦我登录到虚拟机,运行以下命令来运行程序:

java -cp `hbase classpath`:./lab-exercises-shopping-1.0.jar shopping.ShoppingCartApp setup

当我在适当的目录下运行时:

[user01@maprdemo target]$ java -cp `hbase classpath`:./lab-exercises-shopping-1.0.jar shopping.ShoppingCartApp setup

我得到了这个错误:

[user01@maprdemo target]$ java -cp 'hbase classpath':./lab-exercises-shopping-1.0.jar shopping.ShoppingCartApp setup Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2615) at java.lang.Class.getMethod0(Class.java:2856) at java.lang.Class.getMethod(Class.java:1668) at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486) Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 6 more

我相信,如果我错了,请告诉我,NoClassDefFoundError意味着这个类是在编译时找到的,但不是在这里找到的,对吗?但我知道类在那里,因为在我的原始目录中(不确定是否有名称)

ls lab-exercises-shopping/target:
classes      lab-exercises-shopping-1.0.jar   (among other things)

ls lab-exercises-shopping/target/classes/shopping:
dao   InitTables.class   model   ShoppingCartApp.class    ShoppingCartTool.class

当我输入:hbase类路径: Image1 Image2

我对这方面很陌生,不知道我在说什么,但我正在努力学习,所以非常感谢所有的帮助

此外,如果有人也能解释一些其他有帮助的事情: 类路径和HBase类路径之间有区别吗? 我在哪里可以找到/all类路径

更新:我在Putty中做了完全相同的事情,但它做了一些不同的事情: WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Creating table... table created. Creating table... table created. Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at shopping.ShoppingCartApp.main(ShoppingCartApp.java:32)

PDF说明告诉我: 注意:如果您看到以下警告消息,请按此处所示设置LD_LIBRARY_PATH。 警告util。NativeCodeLoader:无法为您的平台加载本机hadoop库。。。 在适用的情况下使用内置java类 信息安全。JniBasedUnixGroupsMappingWithFallback:退回到基于shell的 导出LD_LIBRARY_PATH=/opt/mapr/hadoop/hadoop-0.20.2/lib/native/Linuxamd64-64

所以我尝试了这段代码并再次运行了它,这有点帮助,但在下面的输出中,应该插入三行,而不是两行:

WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
 table already exists.
 table already exists.
in init ...
------------------------------
 Inserting rows in Inventory Table:
mkPut   [Inventory [key=pens, quantity=9]]
mkPut   [Inventory [key=notepads, quantity=21]]
2017-01-17 11:13:16,777 INFO  [main] client.HTable: BufferedMutator Use HBase ThreadPool
Exception in thread "main" java.lang.NullPointerException
        at org.apache.hadoop.hbase.client.HTable.getBufferedMutator(HTable.java:2349)
        at org.apache.hadoop.hbase.client.HTable.put(HTable.java:1311)
        at shopping.dao.InventoryDAO.addInventory(InventoryDAO.java:103)
        at shopping.ShoppingCartApp.saveInventoryTableData(ShoppingCartApp.java:89)
        at shopping.ShoppingCartApp.main(ShoppingCartApp.java:36)

共 (0) 个答案