黑马程序员技术交流社区

标题: 包定义出错,为什么? [打印本页]

作者: jagon    时间: 2014-3-13 19:12
标题: 包定义出错,为什么?
帮忙查查看,为什么会出错?估计是个小错误,学了半天,头昏脑胀,我是真找不到了!

question1.jpg (158.89 KB, 下载次数: 88)

question1.jpg

作者: 往事如烟    时间: 2014-3-13 19:24
首先,并不是你包的问题,而是在你main方法上定义了一个异常抛出,删掉它throws Exception
作者: 榨菜    时间: 2014-3-13 19:26
public class TestDemo{}   这里加个public 试试,  我也不懂的行不行~~~
作者: 菜小徐    时间: 2014-3-13 19:26
本帖最后由 菜小徐 于 2014-3-13 19:31 编辑

你要把java文件放在cn/itheima/demo下面,如果你用myeclipse 的话,直接创一个cn.itheima.demo包,再把java文件放在包里面就行了。不过你是直接进入自己创的文件夹下再编译的,包名可以不写。
作者: jagon    时间: 2014-3-13 19:27
往事如烟 发表于 2014-3-13 19:24
首先,并不是你包的问题,而是在你main方法上定义了一个异常抛出,删掉它throws Exception ...

不行的,不能删除异常,不然会引发新的错误,因为File file=new File();可能会产生异常,问题不在这里!
作者: 往事如烟    时间: 2014-3-13 19:36
  1. package com.itheima;
  2. import java.io.File;
  3. public class TestDemo {

  4.         public static void main(String[] args) {
  5.                 File file=new File("F:\\test\\demo.txt");
  6.                 if(file.exists()){
  7.                         file.delete();
  8.                 }else{
  9.                         try{
  10.                                 file.createNewFile();
  11.                         }catch(Exception e){
  12.                                 System.out.println("aa");
  13.                         }
  14.                 }
  15.         }
  16. }
复制代码


在方法内处理。
作者: 张贺    时间: 2014-3-13 19:46
运行时,把java TestDemo 改成 java cn.itheima.Demo.TestDemo
具体原因可以参照http://blog.sina.com.cn/s/blog_5163b2980100bocf.html
作者: SyouRai_Tsk    时间: 2014-3-13 20:04
编译的时候,带包编译
第一种编译方法( 编译直接生成class 文件,执行需先创建包的路径)
假设当前目录为/src/java/ ,则编译命令为:javac HelloWorld.java

补充: javac 工具读取用 Java 编程语言编写的类和接口定义,并将它们编译成字节码类文件。缺省情况下,编译器将每个类文件与其源文件放在同一目录中。 此处使用缺省的javac则编译完后产生的类文件(.class文件)会在与源文件(.java文件)在同一目录下,此时编译不会产生a目录、b目录。
假设当前目录为/src/ ,则编译命令为:javac /src/java/HelloWorld.java 或者使用相对路径:javac java/HelloWorld.java 执行完该命令后, 在/src/java/ 目录下生成一个HelloWorld.class 文件。执行文件(在java 目录下新建目录a ,在a 目录下新建目录b 将HelloWorld.class 至于b 目录下;执行java a.b.HelloWorld ),必须要按照包的结构先创建目录。

第二种编译方法( 编译直接生成包的路径)
假设当前目录为/src/java/ ,则编译命令为:javac -d . HelloWorld.java

补充:javac -d . *.java 命令中的 “-d”则是设置类文件的目标目录。如果某个类是一个包的组成部分,则 javac 将把该类文件放入反映包名的子目录中,必要时创建目录。 在此处会自动创建c目录、d目录。在d目录下生成编译后的类文件(HelloWorld.class ) 。
说明:"." 为指定编译路径为当前目录;生成的HelloWorld.class 所有目录为/src/java/a/b/HelloWorld.class 。
javac -d c/d HelloWorld.java
说明:c/d 为指定编译路径为/src/java/c/d ,同样也可以写成绝对路径如javac -d d:/ HelloWorld.java ,前提是路径必须先存在;生成的HelloWorld.class 所有目录为/src/java/c/d/a/b /HelloWorld.class 。
假设当前目录为/src/ ,则编译命令为:javac -d . java/HelloWorld.java
说明:生成的HelloWorld.class 所有目录为/src/a/b/HelloWorld.class 。
javac -d java/c/d java/HelloWorld.java
说明:生成的HelloWorld.class 所有目录为/src/java/a/b/HelloWorld.class 。

第三种编译方法(先把源文件按照包结构放到指定的目录中,然后执行编译命令)
假设当前目录为/src/java/,先在目录中创建目录/a/b,然后编译命令:
javac a/b/HelloWorld.java






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2