2014-12-04 15 views
0

我嘗試使用exec運行主:行家的java的目標來運行階對象如何在斯卡拉對象從Maven的

類已被編譯,我們可以從javap的看到它有一個靜態主:

javap sql/hbase/target/scala-2.10/test-classes/org/apache/spark/sql/hbase/HBaseMainTest.class | grep main 
    public static void main(java.lang.String[]); 

讓我們嘗試運行此如下:

mvn exec:java -Dexec.mainClass="org.apache.spark.sql.hbase.HBaseMainTest" 

但是結果

java.lang.ClassNotFoundException: org.apache.spark.sql.hbase.HBaseMainTest 
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:424) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:281) 
at java.lang.Thread.run(Thread.java:724) 

UPDATE

的Gabor提供答案,這裏是工作的解決方案:

mvn exec:java -Dexec.mainClass="org.apache.spark.sql.hbase.HBaseMainTest" -Dexec.classpathScope="test" 
+0

'exec:java'是否將測試類添加到類路徑中?這將是令人驚訝的恕我直言。 – 2014-12-04 22:01:54

+0

@GáborBakos你可能是在正確的軌道上。 – javadba 2014-12-05 00:00:20

回答

3

嘗試財產classpathScope設置爲test。看起來你的主要類是在測試中:

mvn exec:java -Dexec.mainClass="org.apache.spark.sql.hbase.HBaseMainTest" -Dexec.classpathScope="test" 
+0

這是一個好主意,但仍然會出現同樣的錯誤。 – javadba 2014-12-05 00:01:23

+0

對不起,我犯了一個錯字,在分隔'exec'和'classpathScope'的命令中使用':'而不是'.'。你可以嘗試更新? – 2014-12-05 00:05:39

+0

丁丁我們有一個贏家。謝謝 – javadba 2014-12-05 01:03:21