本地Window7系统下没问题,传到Linux系统上出现越界异常,求告知怎么解决

名清锋 发布于 2017/02/10 20:54
阅读 300
收藏 0

在本地Tomcat下运行,无任何问题,传到服务器Linux上就报错,这样的

java.lang.ArrayIndexOutOfBoundsException: 1
	com.FingersDance.core.controller.BasicController.toImg(BasicController.java:296)

 

加载中
0
名清锋
名清锋

public static String classPath = BasicController.class.getClassLoader().getResource("/").getPath();  
    /**
     * 图片处理并返回服务器路径存储路径给页面
     * @return
     * */
    @RequestMapping("/toImg.do")
    @ResponseBody
    public Result toImg(String Base64,HttpServletRequest req, HttpServletResponse res){
        //ImageBase64 base=new ImageBase64();
        //时间戳图片名
        Result result=new Result();
        String timename=new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
        String rootPath;
        String file;
         if("\\".equals(File.separator)){ 
            //绝对路径
             //Windows
                file=req.getSession().getServletContext().getRealPath("\\")+"upload\\image\\"+timename+".jpeg";
                String lastpath=file.split(":")[1];
                file =file.split(":")[0]+":\\"+lastpath;
                //适用通用判断类型,以上舍弃
                rootPath = classPath.substring(1,classPath.indexOf("/WEB-INF/classes"));  
                    rootPath = rootPath.replace("/", "\\");
                    file=rootPath+"/upload/image/"+timename+".jpeg";
         }else{
             //Linux
             rootPath = classPath.substring(0,classPath.indexOf("/WEB-INF/classes"));  
             rootPath = rootPath.replace("\\", "/");  
             file=rootPath+"/upload/image/"+timename+".jpeg";
         }

 

/***

已解决,谢谢各位,以上是实际代码

*/

1
zigzagroad
zigzagroad
判断操作系统,只有Windows才有盘符的概念。
1
刘柳
刘柳

只有windows的盘符才有  : 这个字符。

0
kakai
kakai

“\”反斜线好像只有windows上才支持,建议全部使用“/”,这个应该是多平台都支持的

黑狗
黑狗
java的url类里应该有seperator常量可以用
0
天王盖地虎
天王盖地虎

应该是\反斜线的问题,使用/吧(Win和Linux都支持)。以后所有的路径都用/表示就对了

0
黑狗
黑狗

File.separator 分隔符用这个 有系统差异性

-1
大賢者
大賢者

系统差异吧,但java却又是跨平台的。

把错误debug下,或log下,应该可以找到原因。不存在: 所以分割失败,数组1就索引不到了,越界

返回顶部
顶部