java - 尝试实现 jcifs 和 UniAddress 并获得 NoClassDefFoundError?

标签 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 中执行所有操作。

最佳答案

您的 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 目录,例如

.
\--- 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

window

java -cp .;jcifs-1.3.17.jar myJavaApp

编辑:

所有 java[c] 命令都从 root(.)/testing 目录运行

编辑^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

关于java - 尝试实现 jcifs 和 UniAddress 并获得 NoClassDefFoundError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12860223/

相关文章:

java - spring ntlmV2 不支持

java - GlassFish(或任何 servlet 容器)上 HTTP 连接的 JCIFS NTLM 身份验证

java - 如何将包含反斜杠 (\) 的用户名传递给 jcifs smb?

java - 如何使用带有 groovy 闭包的构造函数参数实例化 Java 抽象类

java - SingletonEhCacheRegionFactory 与 EhCacheRegionFactory

java - 为 JCIFS 客户端添加 IPv6 支持

Android上传到网络驱动器(samba共享)性能问题

java - 尝试使用 jogl 加载并初始化着色器

java - 使用 Selenium Webdriver 进行多项选择

java - 非捕获 lambda 似乎仍然捕获了封闭的实例