上传出现Could not initialize class com.mmall.util.FTPUtil异常

来源:8-7 后台商品图片的springmvc上传与富文本上传ftp服务器功能开发2

hereandthere4387547

2018-04-10

这是我的FTPUtil.java

package com.mmall.util;

import org.apache.commons.net.ftp.FTPClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;

/**
* Created by power on 2018/4/6.
*/
public class FTPUtil {

   private static final Logger logger = LoggerFactory.getLogger(FTPUtil.class);

   private static String ftpIp = PropertiesUtil.getProperty("ftp.server.ip");
   private static String ftpUser = PropertiesUtil.getProperty("ftp.user");
   private static String ftpPass = PropertiesUtil.getProperty("ftp.pass");

   public FTPUtil(String ip, int port,String user,String pwd){
       this.ip = ip;
       this.port = port;
       this.user = user;
       this.pwd = pwd;
   }
   public static boolean uploadFile(List<File> fileList) throws IOException {
       FTPUtil ftpUtil = new FTPUtil(ftpIp,21,ftpUser,ftpPass);
       logger.info("开始连接FTP服务器");
       boolean result = ftpUtil.uploadFile("img",fileList);
       logger.info("开始链接FTP服务器,结束上传,上传结果:{}");
       return result;

   }

   private boolean uploadFile(String remotePath,List<File> fileList) throws IOException {
       boolean uploaded = true;
       FileInputStream fis =null;
       //连接FTP服务器
       if(connectServer(this.ip,this.port,this.user,this.pwd)){
           try {
               ftpClient.changeWorkingDirectory(remotePath);
               ftpClient.setBufferSize(1024);
               ftpClient.setControlEncoding("UTF-8");
               ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
               ftpClient.enterLocalPassiveMode();
               for(File fileItem : fileList){
                   fis = new FileInputStream(fileItem);
                   ftpClient.storeFile(fileItem.getName(),fis);

               }
           } catch (IOException e) {
               logger.error("上传文件异常",e);
               uploaded = false;
           } finally {
               fis.close();
               ftpClient.disconnect();
           }
       }
       return uploaded;
   }

   private boolean connectServer(String ip,int port,String user,String pwd){
       boolean isSuccess = false;
       ftpClient = new FTPClient();
       try {
           ftpClient.connect(ip);
           isSuccess = ftpClient.login(user,pwd);

       } catch (IOException e) {
           logger.error("连接FTP服务器异常",e);

       }
       return isSuccess;

   }

   private String ip;
   private int port;
   private String user;
   private String pwd;
   private FTPClient ftpClient;

   public String getUser() {
       return user;
   }

   public void setUser(String user) {
       this.user = user;
   }

   public String getPwd() {
       return pwd;
   }

   public void setPwd(String pwd) {
       this.pwd = pwd;
   }

   public int getPort() {
       return port;
   }

   public void setPort(int port) {
       this.port = port;
   }

   public String getIp() {
       return ip;
   }

   public void setIp(String ip) {
       this.ip = ip;
   }

   public static String getFtpUser() {
       return ftpUser;
   }

   public static void setFtpUser(String ftpUser) {
       FTPUtil.ftpUser = ftpUser;
   }

   public static String getFtpPass() {
       return ftpPass;
   }

   public static void setFtpPass(String ftpPass) {
       FTPUtil.ftpPass = ftpPass;
   }

   public static String getFtpIp() {
       return ftpIp;
   }

   public static void setFtpIp(String ftpIp) {
       FTPUtil.ftpIp = ftpIp;
   }

   public FTPClient getFtpClient() {
       return ftpClient;
   }

   public void setFtpClient(FTPClient ftpClient) {
       this.ftpClient = ftpClient;
   }
}

这是我的mmall.properties

ftp.server.ip=192.168.10.10
ftp.user=geely
ftp.pass=geely
ftp.server.http.prefix=192.168.10.10/


alipay.callback.url=http://www.happymmall.com/order/alipay_callback.do

password.salt = geelysdafaqj23ou89ZXcj@#$@#$#@KJdjklj;D../dSF.,

这是后台的信息,后台没有打印错误日志

//img.mukewang.com/szimg/5accac250001967a12830408.jpg

这是用RClient做的测试的完整输出信息

HTTP Status 500 - Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class com.mmall.util.FTPUtil

type Exception report

message Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class com.mmall.util.FTPUtil

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class com.mmall.util.FTPUtil
org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1284)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:965)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:833)
javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)

root cause

java.lang.NoClassDefFoundError: Could not initialize class com.mmall.util.FTPUtil
com.mmall.service.impl.IFileServiceImpl.upload(IFileServiceImpl.java:40)
com.mmall.controller.backend.ProductManageController.upload(ProductManageController.java:135)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:748)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:833)
javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.75 logs.

Apache Tomcat/7.0.75


写回答

1回答

hereandthere4387547

提问者

2018-04-11

难受啊,飞,太丢脸了,配置文件其实是mmall.properties。而我在工具类中读取的时候,写成了mmall_properties。

2
1
Geely
找到问题了就好,这几天家里有点事情忙,忙着照顾媳妇坐月子,刚倒出点时间来,回复晚啦,在QQ群里和大家说啦,还请海涵呀,谢谢理解。接着说这个问题哈
2018-04-19
共1条回复

从0开始 独立完成企业级Java电商网站服务端开发

前后端分离,数据库接口设计,架构设计,功能开发,上线运维

9487 学习 · 8814 问题

查看课程