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 都不会。。。。

浙公网安备 33010602011771号