精华内容
下载资源
问答
  • eclipse 突然打不开某个java文件

    千次阅读 2017-04-19 13:54:22
    eclipse 开发Android项目时 突然打不开某个java文件。 错误提示 如下 解决方法 选中打不开java文件 右键 选择打开方式为java文件即可 如下图

    eclipse 开发Android项目时 突然打不开某个java文件。


    错误提示 如下




    解决方法


    选中打不开的java文件 右键 选择打开方式为java文件即可


    如下图


    展开全文
  • java最简单最全入门基础笔记(简单,全你我)

    万次阅读 多人点赞 2019-11-11 09:55:51
    刚开始学习java的时候,可能是一头雾水,知道从何学起,这里跟大家分享一下!(仅仅只供初级学者学习,大佬勿喷) 一、初始java 1.生活中的程序: 从起床到教室上课的过程 穿衣打扮》起床》洗漱》出宿舍》》吃早餐》...

    刚开始学习java的时候,可能是一头雾水,不知道从何学起,这里跟大家分享一下!(仅仅只供初级学者学习,大佬勿喷)

    另外:这里还整理所有java基础单词 下面是链接
    java基础单词
    java第二阶段学习笔记 下面是链接
    面向对象

    一、初始java

    1.生活中的程序:
    从起床到教室上课的过程
    穿衣打扮》起床》洗漱》出宿舍》》吃早餐》到教室
    按照特定的顺序去完成某一件事的过程我们叫做生活中的程序
    2.计算机中的程序:
    一组有序指令的集合,需要和计算机交流就要使用计算机语言,java就是计算机语言的一种
    3.java能做什么:
    1、开发桌面应用程序,比如:QQ、酷狗
    2、开发internet应用程序,比如:淘宝、天猫
    4.java技术平台:
    1、Java SE:标准版,java的技术与核心,开发桌面应用程序
    2、Java EE:提供企业级项目的解决方案,开发网页应用
    5.安装jdk:
    jdk:java的一个核心工具包
    jre:java的一个运行环境(表示java除了可以在windows系统运行,还可以在苹果系统运行)
    环境变量:告诉计算机可以执行.java的运行程序在哪里
    6.开发java程序的步骤:
    1、编写一个java源程序
    新建记事本,将后缀名改为.java
    2、编译java源程序,语法:javac 源文件名.java
    编译后会生成一个.class的字节码文件
    3、运行java程序,运行的是.class的文件,语法:java 源文件名
    注意:java严格区分大小写
    System.out.println () 打印之后换一行,先打印再换行
    System.out.print () 打印之后不换行
    7.转义字符:
    使用"\n"进行换行
    使用"\t"空格一个制表符的位置,也就是一个tab的位置,8个英文字母的长度
    8.java中的注释:
    //注释内容 单 行注释:表示对下一条语句进行一个解释
    /* 注释内容 */ 多行注释:表示对下面一段语句进行一个解释
    /**注释内容 */ 文档注释:表示对一段文本注释
    注释的语句是不会进行编译的
    9.java的编码规范:
    1、遇到大括号 { 就进行一次缩进,缩进距离一个tab键的长度
    2、每一个大括号 } 单独占一行,表示一段语句的结束
    3、 ; 表示每行语句的结束,每一行只写一句代码
    10.使用开发工具开发java程序的步骤:
    1、新建一个java工程
    2、选中新建的工程,选中src文件夹,点击右键new,新建一个class,新建时选中
    public static void main这一项,会自动生成java源程序的框架
    3、去编写java源程序
    4、编译java源程序,开发工具会自动编译
    5、运行java程序

    二、变量、数据类型和运算符

    1.每个程序都只有一个入口,也就是只有一个main方法,只有一个程序可以打开QQ,其他的地方都打
    开不了

    2.程序没有运行是存储磁盘上,运行在内存中

    3.酒店中入住:
    1、开房间(根据不同人数开不同类型的房间)
    2、入住

    4.变量的概念:内存根据数据不同类型开辟的这个空间叫做变量

    酒店 相当于 内存
    房间 相当于 变量
    入住的人 相当于 数据(变量值)
    房间类型 相当于 数据类型(数字还是文字)
    房间号 相当于 变量名

    5.变量名:用于快速找到内存中变量空间位置取得名字
    6.数据类型
    数值型:
    1、整型(int):用于存储整数,整数的类型123,999,666
    byte字节型,short短整型,long长整型
    long》int》short》byte
    2、非整型:用于存储小数,小数的类型1234.5,3.14
    双精度浮点型(double):小数的长度比较长
    单精度浮点型(float):小数的长度短一些
    非数值型:
    1、字符型(char):用于存储单个字符,都需要使用英文状态的单引号括起来
    比如:‘男’、‘女’、‘开’、‘关’
    2、字符串型(String):用于存储一串字符,存储0~n个字符,都需要用英文状
    态下的双引号括起来
    比如:“我的名字是张三”,“我的爱好是打游戏”

    7.变量名的命名规则:
    1、只能够使用_和$这两个符号;
    2、只能使用英文字母、_ 、$三个开头,后面的可以使用数字、字母和_ 、美元符号 ;
    3、使用java语言中的关键字
    4、采用见文识意的方式命名,采用驼峰命名法ageOfStudent,多个字母命名时,
    第一个字母的首字母小写,后面字母首字母大写

    8.变量的使用:
    1、声明变量,就是在内存开一个空间
    语法:数据类型 变量名;(空格和分号不能少),比如:int qian;
    2、变量赋值,就是将数据放到开辟的这个空间
    语法:变量名 = 变量值;比如:qian = 1000;
    3、使用变量
    比如:System.out.println(qian);

    9.运算符的使用:
    1、赋值运算符(=),将等号右边的值赋给左边
    2、拼接运算符(+),将+左右两边的连起来

    表达式:就是符号(如加号、减号)与操作数(如b,3等)的组合,比如:b-1

    算术运算符:
    四则运算:+、-、*、/
    %(取模运算):除以一个数得到余数,就是求余数的运算的运算

    10.从键盘扫描输入的值:
    1、找到有扫描仪的商店,语法:import java.util.Scanner;写在public class的前面
    2、购买一台新的扫描仪,给它取一个名字
    语法:Scanner input = new Scanner(System.in);
    3、使用扫描仪的扫描功能
    如果扫描整数:使用input.nextInt();
    如果扫描小数:使用input.nextDouble();
    如果扫描字符串:使用input.next();

    11.类型转换:
    自动类型转换:
    1、必须两种类型互相兼容,比如:都是数值类型int和double,double和float
    2、转换成的类型一定要比被转换的类型要大,比如:int转换成double
    float转换成double
    12.强制类型转换:
    语法:数据类型 变量名 = (数据类型)变量名;
    比如:double b = 3.14
    int a = (int)b;
    1、同类型的强制类型转换,比如:int a = (int)10.9;
    2、不同类型的强制类型转换,只有char和int可以,通过ASCII码表去转换
    比如:int b = (int)‘a’;

    13.运算符:
    1、赋值运算符 =,将右边的值赋给左边
    2、算术运算符+、-、、/、%,数学运算一样,先、/、%,后+、-
    3、关系运算符(比较运算符):>、<、>=、<=、==、!=
    4、逻辑运算符

    boolean类型(布尔类型):用于比较运算,只有两个值(true和false)默认false

    14.运算符的优先级:
    1、最高优先级,英文状态下的小括号()
    2、最低优先级,赋值运算符=
    3、算术运算符>关系运算符>逻辑运算符>赋值运算符

    三、选择结构

    1.if选择结构
    if基本选择结构
    语法:if(要满足的条件){
    如果条件为true的时候,进入大括号中
    满足条件之后得到的结果,不满足条件不会去执行
    }
    如果条件为false的时候,绕过大括号执行外面的

    	      条件只能是boolean类型的数据
    

    2.逻辑运算符:
    &&(shift+7):and符号,并且的意思,同时满足连接前后条件才为true,有一个不满足为
    false
    ||(shirt+):或者的意思,只要前后两个条件一个为true,整个表达式就为true,同时为
    false才为false
    !(shirt+1):非的意思,就是取反,如果表达式为true,使用非就为false

    3.if-else选择结构:
    适用于基本选择条件的情况
    语法:if(要满足的条件){
    满足条件得到的结果
    }else{
    不满足条件的得到的结果
    }

    4.产生一个随机数:
    1、找到一个有随机数产生器的商店,语法:import java.util.Random;
    2、购买一台随机数产生器并取一个名字,语法:Random ran = new Random();
    3、使用这台随机数产生器的功能区产生随机数,语法:ran.nextInt(数字);
    ran.nextInt(10) 表示产生一个0~9之间的随机数
    ran.nextInt(10) +1表示产生一个1~10之间的随机数

    5.多重if选择结构:
    适用于很多条件分支的情况
    语法:if(要满足的条件1){
    满足条件1得到的结果
    }else if(要满足的条件2){ //默认不满足条件1
    满足条件2得到的结果
    }else if(要满足的条件n){ //默认不满足条件2
    满足条件n得到的结果
    }else{ //默认不满足条件n
    不满足所有条件得到的结果
    }
    只要找到一个满足的条件,执行完之后,结束选择结构

    6.嵌套if选择结构
    适用于在一个判断的基础再做一次判断的情况
    语法:if(要满足的条件1){
    满足条件1得到的结果
    if(要满足的条件2){
    满足条件2得到的结果
    }
    }else{
    不满足条件1得到的结果
    }

    ==只能够比较数值类型,比较字符串是否相等,使用.equals(“要等于哪个字符串”);
    比如:sex.equals(“男”);10 == 10

    四、循环结构

    1.循环结构:
    打印50份试卷,是从第1份开始打印,打印到第50份结束,重复打印试卷的过程
    绕操场跑10圈,从第1圈开始,到第10圈结束,重复跑步的过程
    做100道编程题,从第1题开始,到第100道结束,重复做题的过程
    2.循环的概念:重复完成某一件事情或者某一个操作,有一个开始位置和结束位置就叫做
    循环
    3.循环的特点:
    1、循环条件:也就是满足某个条件下才做重复的操作
    2、循环操作:也就是重复所做的事情或者操作

    4.while循环的语法:
    while(循环条件){
    满足条件的时候所做的循环操作
    }
    特点:先判断,再执行
    使用while循环的步骤:
    1、确定是否存在重复操作
    2、分析出循环条件和循环操作分别是什么
    3、套用while循环语法写出循环结构
    4、检查循环是否能正确退出

    5.do-while循环结构的语法:
    do{
    循环操作
    }while(循环条件);
    特点:先执行循环操作,再进行循环条件判断(先执行,再判断)

    6.while循环和do-while循环的差别:
    1、循环的次序不同,while循环是先判断,再执行,do-while是先执行,再判断;
    2、while循环在初始值不满足循环条件的时候一次都不会执行,do-while循环在初始值不
    满足循环条件的时候至少执行一次

    7.程序调试:
    断点调试的步骤:(每次调试后取消掉断点)
    1、设置断点:在左侧边栏的位置点击鼠标左键两次,可以生成一个断点
    2、进入调试模式:点击右键,选择debug as进入debug调试模式,程序会在设置断点的地
    方停下来
    3、单步执行,也就是一行一行的执行代码,按F6单步跳过执行代码
    4、观察变量值的变化
    5、找出错误的位置
    6、改正错误
    7、运行看结果是否正确**

    8.for循环结构
    语法:for(表达式1;表达式2;表达式3){
    循环操作
    }
    表达式1:循环从哪里开始,也就是循环的初始值,比如:int num = 1
    表达式2:循环的条件,也就是循环到哪里结束,比如:num <100
    表达式3:计数器,也就是每循环一次,初始值产生怎样的变化,比如:num++
    每个表达式之间用分号隔开,每个表达式都可以不写,但是分号不能省略

    for循环的执行顺序:
          ①先去执行表达式1,也就是先去找初始值
          ②第二步去执行表达式2,也就是去找循环条件
          ③第三步去执行循环操作
          ④最后才去执行表达式3,也就是最后才实现初始值变化的过程
    
    表达式1和表达3中可以写多个,表达式2,条件只能有一个
    

    9.跳转语句的使用:
    break关键字:(通常和if选择结构一起使用)
    在switch使用break表示结束switch选择结构去执行选择结构外的代码
    在循环中使用break表示结束循环结构去执行循环结构外的代码

    continue关键字:(通常和if选择结构一起使用)
    continue只能够在循环结构中使用
    在循环中使用continue表示结束当前这一次循环,然后开始下一次循环
    
    使用场合:
    

    break常用于switch结构和循环结构中

    continue一般用于循环结构中

    作用(循环结构中)
    

    break语句终止某个循环,程序跳转到循环块外的下一条语句

    	continue跳出本次循环,进入下一次循环 
    

    10.循环结构四要素:
    1、初始值,也就是循环要从哪里开始
    2、循环条件,循环要到哪里结束
    3、循环操作(循环体),就是需要重复做的某些操作
    4、计数器(迭代部分),就是每次重复之后,初始值要产生的变化

    11.while、do-while和for循环的区别:
    1、执行顺序不同
    while和for循环:先判断,再执行
    do-while循环:先执行,再判断

    2、适用场景(循环次数固定推荐使用for循环)
       for循环只适用于循环次数固定的情况
       while和do-while循环无论循环次数是否固定都可以使用
    

    五、数组

    1.数组的概念
    在内存中开辟的一串连续的空间,用来存储相同数据类型的,比如:鞋柜只会放鞋子,衣
    柜只会用来放衣服

    2.数组的基本要素
    1、标识符(数组名):数组的名称,用来区分不同的数组
    2、数组元素:存放在数组空间中的数据
    3、数组下标:对数组中的空间进行编号,区分每个空间,数组下标从0开始,可以通过数
    组下标找到对应的空间
    4、元素类型:数组的数据类型

    3.数组的定义和使用
    1、声明数组:告诉计算机数组是什么类型
    语法:数据类型[] 数组名 或者 数据类型 数组名[]
    比如:String[] args;int[] nums,数组名的命名方式和变量命名方式一样

    2、分配空间:告诉计算机要开辟一串连续的多长的空间
    	语法:数组名 = new 数据类型[数组长度];
    	比如:scores = new int[30];
    第一步和第二步可以一起写
    	数据类型[] 数组名 = new 数据类型[数组长度];
    
    3、赋值:向开辟好空间里面去存放数据
    	语法:数组名[数组下标] = 数据;
    	比如:scores[0] = 60;//表示将数组第一个空间存放了60这个整数
    	      scores[1] = 80;
    	
    	直接声明数组时就进行赋值
    	语法:数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据n};
    	      数据类型[] 数组名 = {数据1,数据2,数据n};
    	      注意:如果在声明数组时就直接赋值,那么不要写数组长度
    	比如:int[] scores = new int[]{60,80,100,50,60,70};
    
    	通过循环的方式动态的录入数据
    	循环从初始0开始,到数组的最大长度结束,每次加1
    	for(int i = 0;i < 5;i++){
    		System.out.println("请输入第"+(i+1)+"名学生的成绩:");
    		scores[i] = input.nextInt();
    	}
    
    4、数据的使用:将存放在数组空间中的元素拿出来使用
    	使用循环的方式将存放在每个空间中数据拿出来使用	
    	for(int i = 0;i < 5;i++){
    		System.out.println("第"+(i+1)+"名的学生成绩为"+scores[i]);
    	}
    	数组名.length表示数组的长度
    	比如:int[] scores = new int[10];
    	      scores.length = 10;//数组长度为多少,该值就为多少
    

    4.数组的排序
    使用Arrays类,使用Arrays的步骤
    1、找到有Arrays的商店,语法:import java.util.Arrays;
    2、Arrays是一个公用的工具,不需要够买,只要去使用就可以,
    语法:Arrays.sort(数组名);
    它会将该数组进行一个升序的排列
    二重循环:在一个循环中再使用一个循环结构

    循环特点:外层循环循环一次,内层循环循环一遍(也就是从开始到结束循环完)
    while循环,do-while循环和for循环之间可以相互嵌套,也就是说while循环可以放while,
    do-while和for循环,其他两种一样
    5.二重循环中跳转语句的使用
    continue:如果continue在内层循环中,表示结束内层循环的本次循环,开始内层循环的
    下一次循环,如果在外层循环表示结束外层循环的本次循环,开始外层循环的
    下一次循环,也就是说,continue在哪一个循环的{}中,就结束哪一个循环的
    本次循环,开始该循环的下一次循环。
    break:如果break在内层循环中,表示结束内层循环的整个循环,开始执行内层循环外面
    语句,如果在外层循环中表示结束整个循环,也就是说,break在哪个循环中,结
    束的就是哪个循环的整个循环。

    六、类和对象

    1.OO:Object Oriented表示面向对象的意思

    2.世界由什么组成:水,陆地,草,人,动物,植物,楼房,汽车等等
    由所有一切真实存在的东西组成,这些真实存在的东西就叫作对象

    属性:就是对象所具有特征
    方法:就是对象所执行的行为或操作
    对象:用来描述真实存在事物的一个实体,由一组属性和方法组成

    封装:对象的属性和方法通常封装在一起,共同体现事物的特性,两者不可分割

    :将对象共同的属性和方法抽取出来就是类
    类是模子,定义对象所具有的属性和方法

    3.类和对象的关系:
    类是抽象的,对象是具体的实体
    对象是类的一个实体,类是对象的抽象概念

    4.定义一个类的步骤:
    1、新建一个class,给这个class取一个类名,名字和你想要定义的类型一致
    类名的取名方式,使用帕斯卡命名法,所有单词的首字母大写
    2、定义类的属性
    3、定义类的方法

    5.使用定义好的类:
    1、新建一个对象,语法:类名 对象名 = new 类名();
    比如:Car car1 = new Car();
    2、通过“.”操作符来使用这个对象的属性和方法

    六、类的无参方法

    1.定义类的方法:
    语法:返回修饰符 返回值类型 方法名(){
    //具体实现方法的操作
    }
    比如:
    public void sayHello(){
    //具体实现方法的操作
    System.out.println(“你好”);
    }
    1、访问修饰符(在哪些地方能够使用这个方法),public公共的,最高级别
    2、返回值类型,执行完方法后能够得到什么数据
    void,表示没有返回值,也就是没有任何数据返回
    如果有数据返回,那么就需要使用return关键字返回一个数据,并且返回的数据类型
    和返回值的数据类型一致
    3、方法名(),方法名表示方法的名字
    4、方法体:具体实现方法的操作

    2.编写类的方法步骤:
    1、先定义方法的访问修饰符,先写没有返回值类型,定义方法名,方法名的命名采用见
    文识意的方式
    2、定义方法体,也就是写具体实现方法的操作
    3、判断方法是否有返回值,如果有,添加return关键字返回该数据,并修改返回值类型

    方法是怎么去实现,方法是怎么实现的只需要在定义方法的关心,使用的时候只要知道是哪一个方
    法是什么作用就可以了

    3.方法的调用:
    1、在同一个类调用同一类中的方法,只需要通过方法名()就可以指直接调用
    2、在不同类中调用方法,需要先new一个需要调用方法的类的对象,然后通过对象名.方
    法名的方式去调用方法
    调用方法的时候,实际上就是去执行方法体中的代码

    4.常见错误:
    1、返回值数据类型必须和返回值类型一致
    2、不可以返回多个值,也不能写多个返回值类型
    3、定义方法不能够相互嵌套
    4、程序逻辑代码(顺序、选择、循环结构)只能写在方法体中

    5.面向对象的编程:
    类的方法实现某个特定的功能,其他类不需要知道它如何实现,只需要知道它是用来干什
    么的

    6.全局变量:(成员变量)它是指定义在类中的变量,它在类中的任意位置都可以被识别
    比如:类的属性
    1、作用域:作用在类中任意位置
    2、初始值不同:如果没有给它赋值,系统会默认给它一个初始值,int类型为0,double
    为0.0,String为null
    3、在同一个类中不允许同名存在

    7.局部变量:它是指定义在方法体中变量,它只能在该方法中被识别
    1、作用域:作用在定义该变量的方法体中
    2、初始值不同:必须给它赋值后才能去使用,系统不会给它赋初始值
    3、在同一个类中,不同的方法中可以存在相同的命名,同名的两个变量没有任何关系
    在同一个类中,允许局部变量和成员变量命名相同,如果两个命名一样,在使用时,局部变量有
    更高优先级

    七、类的有参方法

    1.带参数的方法:
    无参方法:在方法名()的括号中没有参数的方法
    有参方法:在方法名()的括号中有参数的方法

    2.定义有参方法的语法:
    访问修饰符 返回值类型 方法名(参数1、参数2、参数3…参数n){
    方法体(具体实现方法的过程)
    }
    3.参数:实际就是声明的一个变量,声明的变量使用“,”隔开
    在定义方法的时候,方法中的参数只是进行了声明,并没有赋值,这个参数就叫做形式参
    数,也就是形参;
    在调用方法的时候,对方法中参数进行赋值,这个参数就叫作实际参数,也就是实参

    4.调用带参数的方法:
    同一类中调用同一类中的方法,直接方法名()调用
    不同类中调用不同类中的方法,先new一个对象,再通过对象名.方法名()的方式调用
    必须和定义方法的参数个数相同,并且数据类型必须一致,顺序也要和定义的位置一致

    5.二次传递:在调用方法的时候,传递一个参数值给该方法,然后在该方法中去调用了另外的方法,
    再将这个参数值传递给在该方法中调用的这个方法

    F5:单步跳入,遇到方法的时候回进入方法体中,逐方法体的代码一行一行的执行
    F6:单步跳过,遇到方法的时候直接执行完方法,获得结果,不进入方法体

    6.对象数组:就是自己定义的类型的数组
    自己定义类型,如果没有new一个对象,那么它的初始就为null

    7.包:在windows中以文件夹的方式存在
    1)将类分为几个类似于文件夹的单元
    2)防止命名冲突,在同一个包不允许重复命名,不同包可以重复
    3)可以对类中数据中进行一个保护作用

    声明包,语法:package 包名; 必须为java源文件中第一条非注释语句
    包名:1、通常由小写的英文字母组成,不能以圆点开头或结尾
    2、开头一般是一个顶级域名cn,com,org,net
    3、后续部分一般由公司名称、部门名称、小组名称、项目名称

    导入包:语法:import 包名;
    导入包,可以将在这个包中的所有类导入到我们这个类中,导入后才能使用该包中的类
    通过ctrl+鼠标左键点击进入定义方法的位置

    八、字符串

    1.字符串:就是一个或多个字符组成

    2.声明字符串
    1、直接声明,比如:String name = “张三”;
    2、使用对象的方式,new一个String类的对象,
    比如:String name = new String(“张三”);

    3.栈:用来存储较小的数据,离访问位置比较近,比如:int,double,short。。
    :用来存储较大的数据,离访问位置比较远,比如:String,数组,自己定义的类型

    4.引用数据类型:通过在栈中的地址去引用存储在堆中数据的数据类型
    只要使用了new关键字,就表示在堆中新开了一个空间,然后在栈中留下一个地址
    String类型中的值是不可变的

    5.比较字符串
    使用比较的是存储的地址,引用类型地址不相同,不能使用比较
    .equals比较的是存储的数据,将数据一一比较,字符串使用.equals比较是否相等
    .equals()比较字符串是否相等
    .equalsIgnoreCase()忽略大小写比较字符串是否相等
    .toLowerCase()将字符串中所有字符转化为小写
    .toUpperCase()将字符串中所有字符转化为大写

    6.获得字符串长度
    字符串名.length,获得字符串长度,每个字符就是一个长度

    7.字符串的拼接
    1、使用拼接符+进行拼接
    2、使用.concat()方法进行拼接

    8.字符串的查询和提取
    indexOf("@qq")、indexOf(’@’),查询第一个字符出现的位置
    .lastIndexOf(‘7’)、.lastIndexOf(“77”),查询最后一个字符出现的位置
    查询:字符串名.indexOf(需要查找字符串名),返回一个int类型的数据,第一个数从0
    开始,返回字符串第一个字符所在位置,找不到指定的字符串返回-1
    9.提取
    .substring(8)提取第9个字符串后面的所有字符串
    .substring(8,12)提取从第8个字符到第11个字符,开始的位置从0开始数起,结束的位置
    从1开始数起
    忽略字符串前后的空格
    .trim()忽略字符串前后的空格,中间不能忽略

    10.字符串的分割
    .split(以什么为分割的字符),返回一个String的数组,将分割的每个字符串放到这个数
    组中

    11.字符串的替换
    .replaceAll(表示替换前的字符,表示替换后的字符),返回一个String的数据

    StringBuffer类,是一个可变的字符串类型
    语法:StringBuffer sb = new StringBuffer(“小林”);

    StringBuffer的拼接:
    .append(“需要追加的字符串”);追加的时候不会新开辟空间

    StringBuffer的插入字符:
    .insert(插入的位置,要插入的字符);

    *有什么问题欢迎大家提出来 ♪(´○`)o团结就是力量

    展开全文
  • Java 下载Excel打不开是什么鬼

    千次阅读 2018-07-25 16:19:01
    java在1.7之后提供了判定下载文件contentType的方法:  可以自动检测文件类型, Path path = Paths.get(filePath); contenType = Files.probeContentType(path); System.out.println(contenType); ...

    场景:草草写了一个独立的文件服务,可以支持文件的上传和下载操作(常规操作),操作图片的读取mei有问题,但是在下载Excel文件之后,发现提示文件损坏,无法正常打开。

    排查:直接从文件服务器上将文件拷贝出来,发现文件能正常打开没有问题。

    分析:下载excel在服务器上后缀名称为.xls;但下载下来为.xlsx

    观察:文件下载有问题-在代码中没有设置下载文件的contentType和Head

             ----Content-Type:       application/octet-stream  

                 这里有content-type的对应标识:https://blog.csdn.net/luman1991/article/details/53423305

                 该实体头的作用是让服务器告诉浏览器它发送的数据属于什么文件类型
             ----Content-Disposition: attachment;filename=aaa.zip 

                 当Content-Type 的类型为要下载的类型时 , 这个扩展头会告诉浏览器这个文件的名字和类型。

                Content-Disposition中指定的类型是文件的扩展名,并且弹出的下载对话框中的文件类型图片是按照文件的扩展名显示的,点保存后,文件以filename的值命名,保存类型以Content中设置的为准。
    注意:在设置Content-Disposition头字段之前,一定要设置Content-Type头字段。(这里摘自博文,自己测试无论位置前后,都能正常下载打开。)

    解决:下载文件时设置消息头Content-Type和扩展头Content-Disposition

                java在1.7之后提供了判定下载文件contentType的方法:

                可以自动检测文件类型,

                Path path = Paths.get(filePath);
                contenType = Files.probeContentType(path);
                System.out.println(contenType);
                response.setContentType(contenType);

                另外,对未知的的文件类型,可以使用

    response.setContentType("application/octet-stream;charset=utf-8");

     对Content-Disposition的设置主要根据服务器上带后缀的文件的名称,我这里需求是要跟服务器上文件类型及后缀名称保持一致,所以直接在扩展头写入写入的是全文件名称。

    response.setHeader("Content-Disposition", "attachment;fileName=" + path.getFileName());

    --over--

    展开全文
  • Eclipse打不开,报错Error:could not find java.dll 很多小伙伴在安装使用Eclipse时会遇到各种报错,很多都是因为环境变量没有配置好,或是因为多次卸载、重装过程中出现了问题,问题既然出现了就要解决。 网上有人...

    Eclipse打不开,报错Error:could not find java.dll

    很多小伙伴在安装使用Eclipse时会遇到各种报错,很多都是因为环境变量没有配置好,或是因为多次卸载、重装过程中出现了问题,问题既然出现了就要解决。

    网上有人说在 C:\Windows\System32 下进行搜索,将搜到的java.exe删除、改成javaa.exe什么的,但是我并没有搜到该文件。(不可行)

    解决办法如下:

    在cmd里面使用echo %JAVA_HOME% 可以输出JAVA_HOME地址

    下图才是正确的:
    在这里插入图片描述
    如果没有出现你的jdk的正确安装目录,那就重新设置你的环境变量!

    教你如何配置JDK环境变量: Java----JDK开发环境搭建及环境变量配置

    下面的是我配置的环境变量样例,供参考
    在这里插入图片描述
    在这里插入图片描述
    需要更改环境变量里面path里面的先后顺序,将jdk环境配置放置最前面即可

    如果环境变量没有配错,顺序也没有错误,那么就要查看你的本机系统和eclipse的版本是否一致(X86还是X64)

    在这里插入图片描述
    如果不匹配,比如你64位的系统下载了32位的JDK,那就得卸载重新安装了

    安装好再重新设置环境变量即可

    JDK安装及环境变量配置
    Eclipse常见问题解决办法

    按照上述步骤配置好后就可以啦~

    展开全文
  • java导出word打不开

    千次阅读 2017-06-30 16:05:34
    导出word后显示XML无效,打开XML后发现太多了 知道从哪里下手? 特殊字符知道存在于哪里? 这个时候可以借助于我们的浏览器 1.将文件修改为.xml格式(导出时候就是xml所以可以直接修改后缀) 2.将文件用...
  • Eclipse打不开报错:Error:could not find java SE Runtime Environment/Error: could not find java.dll 经常会有小伙伴在使用Eclipse时出现打不开报错的情况 报错如下:Error:could not find java SE Runtime ...
  •       我们在安装BurpSuite时需要打开.jar文件,打开jar文件的前提是安装java环境,这里我安装的是1.8版本的。    正常流程是安装好java环境可以直接打开.jar文件,而我的不行,我的图标、文件类型也没有任何...
  • 一、 JDK和Eclipse的版本兼容(位数对应) 二、 就是环境变量配置错误,请重新配置环境变量 问题二:   解决方式: 一、 没有安装jdk或没有配置环境变量 二、 环境变量配置错误(由于次原因引起此类错误的...
  • java安装后双击打不开

    千次阅读 2019-09-26 09:58:03
    解决方法:在eclipse.ini中没有配置jdk 加入如下语句 -vm D:/biancheng/java/jdk1.8.0_211/bin/javaw.exe 也就是 加入jdk的路径 保存启动
  • stegsolve.jar怎么使用,打不开,下载之后是java文件,不知道怎么用
  • at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline....
  • public Map&lt;String, Object&gt; savePic(@RequestBody String paramStr) throws Exception {    String base64Pic = "";  String picName = "... JSONObject jsonObject = (JSONObject.....
  • 在ecplise的安装目录中打开ecplise.ini文件(ecplise的配置文件) 将如图所示的 -vm 和java路径删掉就可以了 ecplise正常
  • 关机重启,清楚回收站,打开Eclipse就可以了,可能是Eclipse版本导致的问题
  • 我已经根据教程在系统上设置了,但是点击会闪一下就没有反应了,大神们这个怎样解决啊?!是不是跟我安装的系统有关系?
  • 解决这个问题其实很简单。 在安装路径D:\Oracle\Middleware\Oracle_Home\oracle_common\common\bin(这是我的路径,请根据自己的选择),commenv.cmd的文件中搜索Xmx1024m,这个值设置的太大,搜索到这个值,然后改...
  • eclipse中右击jar包 java source attachment 显示怎么办
  • 把原来的模板稍加改动后,上传下载word打不开。 解决:wps改动的原来的模板,用office修改保存就没问题了。 原理:不知道。 实现代码: public static void getMoBanDoc(HttpServletRequest req, ...
  • 今天上午安装weblogic12.1.3 新建域提示能创建java虚拟机,如下图 于是打开Configuration Wizard的文件位置,打开config.cmd 在最下方加上 ECHO %JAVA_HOME%\bin\javaw %JVM_ARGS% ...
  • Gephi安装好打不开怎么办

    万次阅读 2017-12-27 15:27:29
    gephi安装好打不开 ? 我安装gephi时出现了如下图所示错误,点击Gephi,开始初始化,然后就闪退出去了 1.安装jre7/jdk7。如果之前安装了jdk8/jre8,需要先卸载重新安装,不然不能运行!!!!!!!。 ...
  • java配置没问题 其他的Myeclipse、AS、IDEA都是可以运行的,但是cmd运行java就提示java不是内部或外部程序,之前配置好之后没动过,这是为什么 ![图片说明]...
  • 手一痒,知道碰到了那里,把eclipse的WindowBuilder搞崩溃了,Design能打开可视化界面, 网上没搜到具体方法,但我的解决方法挺简单的,记录一下。 报错: Internal Error WindowBuilder encountered ...
  • 报错信息如下图所示: 在本地电脑中更换JDK版本,或重新安装JDK到其他路径之后,重新配置环境变量后,经过cmd检查无误,再打开eclipse显示报错。 出现原因:虽然本地电脑JDK版本改变或安装路径的改变,但是eclipse...
  • 在eclipse下安装反编译插件可以直接查看 .class 文件对应的java源码。 反编译插件有 jdeclipse 和 jadeclipse。 (1) jdeclipse http://www.djjavadecompiler.com/ (2) jad + jadeclipse 下载 jadeclipse:...
  • 2013-04-14 23:21 oracle sql developer怎么打不开呢,出现enter the full pathname for java.exe 要你选择你本地jdk的bin目录下的java.exe程序来执行
  • java打jar包与找到依赖包详解

    万次阅读 2018-10-09 14:49:19
    eclipsejar包与找到依赖包详解eclipse工具jar1.项目右键--&amp;gt;export --&amp;gt;搜索java2.选择JAR file3.打包eclipse打包可执行jar1.项目右键--&amp;gt;export --&amp;gt;搜索java(参考...
  • 在这里遇到的一个问题是,复制成功的文件,却打不开。比如PDF文件,显示文件损坏,打不开文件。后来才发现是因为原因在字节流操作和字符流操作的区别: 字符流主要针对一些文本文档(比字节流操作的效率要高),...
  • 还是ftl模板的内容格式在自己填充数据的时候有了稍微的改动,改变了它原来的格式,出现这样问题的时候好事一步步排查,或者重头再来,所以在动态填充模板的数据是一定要仔细,一步一步来 ...
  • ![图片说明](https://img-ask.csdn.net/upload/201605/04/1462368131_654372.png)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 393,538
精华内容 157,415
关键字:

java打不开怎么办

java 订阅