Mac 使用命令行运行java程序的一点提醒

  今天在《Java学习笔记》中看到一段程序,关于输入输出流的复制程序

 

这是IO 类的代码

 1 package cc.openhome;
 2 
 3 import java.io.*;
 4 
 5 public class IO {
 6     public static void dump(InputStream src, OutputStream dest) throws IOException {
 7         try (InputStream input = src; OutputStream output = dest) {
 8             byte[] data = new byte[1024];
 9             int length = -1;
10             while((length=input.read(data)) !=-1){
11                 output.write(data,0,length);
12             }
13         } 
14     }
15 }

这个是copy类的代码

package cc.openhome;

import java.io.*;

public class Copy {
    public static void main(String[] args) throws IOException {
        IO.dump(new FileInputStream(args[0]),
                new FileOutputStream(args[1])
                );
    }
}

 

这代码在eclipse下是无法运行的,显而易见,因为没有 输入跟输出文件,单纯的运行会抛数组越界错误

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at cc.openhome.Copy.main(Copy.java:7

虽然我也不懂什么原因,书上是让我们用命令行的方式使用

 

Windows 下可以直接

> java cc.openhome.Copy 源文件 目标文件

但是在Mac 下这么用会一直报错

 

必须把包"cc.openhome"折叠变成"/cc/openhome"才可以,Mac 跟 Windows 的包处理形式不一,反正在Mac下得这么用

 

而且,你从哪里找的"cc.openhome"这个包呢?你以为可以在用户目录加下,用路径访问?

比如

java /Users/cafe3165/Documents/workspace/Tenth_1/bin/cc/openhome/Copy  源文件位置 目标文件位置

 这样还是不行的,还是找不到主类(好坑)

😂对了,我的文件夹是放在eclipse 的workspace下的,.java文件编译成功后会生成.class文件放在bin中

 

进入bin目录下后

再运行

bin cafe3165$ java cc/openhome/Copy /Users/cafe3165/Desktop/Hello.java /Users/cafe3165/Desktop/Hello.txt

  

这时候就能在桌面上看到

 

 

果然不能过度以来IDE  连javac 跟java 都不会。。。。

 

posted @ 2016-08-09 21:00  爱拖交作业的小明  阅读(546)  评论(0)    收藏  举报