试图实现jcifs和UniAddress并获取NoClassDefFoundError?

时间:2012-10-12 13:32:36

标签: java jcifs

我正在使用JCIFS(http://jcifs.samba.org/)。我的代码很简单,取自Login.java示例:

import jcifs.*;
import jcifs.smb.*;

public class netp {
    public static void main( String argv[] ) throws Exception {
     System.out.println("START");

     String ip = "10.0.0.1";
     String domain = "domain";
     String user = "user";
     String pass = "pass";

    UniAddress dc = UniAddress.getByName( ip );
    NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication( domain + ";" + user + ":" + pass );
    SmbSession.logon( dc, auth );

     System.out.println("END");

     return;
    }
}

如果我这样做,编译就可以了:

javac -cp jcifs-krb5-1.3.17.jar netp.java

但是,如果我像这样运行它:

java -cp jcifs-1.3.17.jar netp

我明白了:

Error: Could not find or load main class netp

我做错了什么?

我在这里上传了完整的源代码:

https://www.box.com/s/po4frdmy0obqiroy9anp

注意:我在Windows中执行此操作。

3 个答案:

答案 0 :(得分:2)

似乎你的myJavaApp类在某个包中,除了根本没有设置类路径外,你已经省略了包名。

我的测试目录结构:

.
\--- jcifs-1.3.17.jar
\--- testapp
     \--- myJavaApp.java  

我这样编译:

javac -cp jcifs-1.3.17.jar testapp/myJavaApp.java

按预期在testapp文件夹中提供了myJavaApp.class。我在linux上运行它是这样的:

java -cp .:jcifs-1.3.17.jar testapp.myJavaApp

在这样的窗口上:

java -cp .;jcifs-1.3.17.jar testapp.myJavaApp

扔了

jcifs.util.transport.TransportExceptionjava
java.net.NoRouteToHostException: No route to host

这意味着myJavaApp已经成功运行。

如果我们移除testapp directoy,例如

.
\--- jcifs-1.3.17.jar
\--- myJavaApp.java 

它编译:

 javac -cp jcifs-1.3.17.jar myJavaApp.java

并在linux上运行:

java -cp .:jcifs-1.3.17.jar myJavaApp

for windows

java -cp .;jcifs-1.3.17.jar myJavaApp

编辑:

所有java [c]命令都是从root(。)/ testing目录

运行的

EDIT ^ 2:

我已下载您的代码并将自己置于netp目录中。像这样编译代码:

C:\netp>"C:\Program Files\Java\jdk1.6.0_25\bin\javac.exe" -cp jcifs-krb5-1.3.17.jar netp.java

并成功运行它:

C:\netp>"C:\Program Files\Java\jdk1.6.0_25\bin\java.exe" -cp .;jcifs-krb5-1.3.17.jar netp

输出:

START
END

答案 1 :(得分:1)

运行程序时,您还需要在类路径上提供jar:

java -cp jcifs_1.3.17/jcifs-1.3.17.jar myJavaApp

答案 2 :(得分:1)

尝试将当前目录添加到类路径中:

java -cp .:jcifs-krb5-1.3.17/jcifs-krb5-1.3.17.jar myJavaApp

如果您使用的是Windows,请使用分号替换冒号:java -cp .;jcifs-krb5-1.3.17/jcifs-krb5-1.3.17.jar myJavaApp

干杯,