无法找到所需的类(javax.activation.DataHandler和javax.mail.internet.MimeMultipart)。附件支持已禁用

时间:2012-09-01 10:37:21

标签: java xml web-services soap

我在调用Web服务中存在的方法时遇到问题。 wsdl是使用AXIS创建的。

当我尝试使用我的java代码调用它时,我从服务响应中获取空值。

我收到了在控制台中打印的警告消息:

  

无法找到所需的类(javax.activation.DataHandler和javax.mail.internet.MimeMultipart)。附件支持已禁用。

在尝试解决此问题时,我在工作区构建路径中添加了activation.jar和mail.jar,重新启动了服务器。

修改

右键单击WSDL ==>生成CLient

然后我得到了一个代理类,使用它我写这个来调用服务方法:

public class CallingWebService1 {

public static void main(String[] args) throws Exception {

    WebService1Proxy proxy1 = new WebService1Proxy();
    proxy1.setEndpoint("http://localhost:8045/WebService1/services/WebService1");

    EmployeeDetails details = proxy1.getDetails();
    System.out.println("Employee Id: " + details.getEmpId());
    System.out.println("Employee Name: " + details.getEmpName());
    System.out.println("Dept Id: " + details.getDeptId());
    System.out.println("Dept Name" + details.getDeptName());
    System.out.println("Age: " + details.getAge());
}

但问题仍然存在:(

更多信息:

getDetails()方法正在执行数据库操作,从Oracle DB中获取一些记录。为了执行DB操作,使用class12.jar。是否与我正在进行的方式调用服务方法有关?

3 个答案:

答案 0 :(得分:40)

为了修复javax.activation.DataHandler问题,您必须在类路径中添加JavaBeans Activation Framework activation.jar。

为了修复javax.mail.internet.mimeMultipart问题,您必须在类路径中添加Java Mail API mail.jar。

控制台中打印的警告消息显示上述jar不在类路径中。

答案 1 :(得分:22)

只有一个jar(mail.jar)就足够了来解决这个问题。这个jar应该出现在你的类路径中。

答案 2 :(得分:0)

不幸的是,wsdl仍在使用中:(您可以通过在下面添加依赖项来解决此警告。

    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.7</version>
    </dependency>
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
    </dependency>