是否可以从IDE(例如NetBeans或Eclipse)编写一个程序,该程序可以从命令行编译并在用户输入两个参数后立即运行,以便运行java类程序的名称?
如果是这样,绝对路径可以作为参数之一传递吗?
如果是这样,(如果源文件或目标文件有多字描述符,如Big Sky File.txt),如何将其作为参数传递?
我知道这是一个很多问题,但我已经搜索过高低,而且似乎没有任何东西可以在任何这些主题上划线。
@ Code-Guru,@ thkala,这是我正在尝试的代码(需要一些格式化):
编辑:@ Code-Guru,我添加了违规行(不知道我是怎么错过的)。
下一个编辑:@ Code-Guru,这是CopyFile.java中更新的文件内容,以及生成的错误消息:
import java.io.*;
public class CopyFile
{
public static void main(String args[]) throws IOException, NullPointerException
{
int num;
FileInputStream fileIn;
FileOutputStream fileOut;
try
{
// open input file
try
{
fileIn = new FileInputStream(args[0]);
}
catch(FileNotFoundException e)
{
System.out.println("Input File Not Found.");
return;
}
// open output file
try
{
fileOut = new FileOutputStream(args[1]);
}
catch(FileNotFoundException e)
{
System.out.println("Error Opening Output File.");
return;
}
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("Incorrect argument use:java CopyFile Source Destination");
return;
}
// Copy File
try
{
do
{
num = fileIn.read();
if(num != -1)
{
fileOut.write(num);
}
}
while(num != -1);
}
catch(IOException e)
{
System.out.println("File Error: Could not copy file.");
}
fileIn.close();
fileOut.close();
}
}
以下是我从命令提示符处收到的错误消息:
错误:无法找到或加载主类CopyFile
答案 0 :(得分:2)
是否可以从IDE(例如NetBeans或Eclipse)编写一个程序,该程序可以从命令行编译并在用户输入两个参数后立即运行,以便运行java类程序的名称?
是的,这是可能的。
如果是这样,绝对路径可以作为参数之一传递吗?
绝对 - any string can be passed as an argument,只要其大小不超过某个(通常是系统定义的)限制。
如果是这样,(如果源文件或目标文件有多字描述符,如Big Sky File.txt),如何将其作为参数传递?
通常,带有空格的参数,特殊字符e.t.c.由调用shell处理,而不是Java程序。请参阅您的文档,了解如何在您使用的任何命令行shell中正确引用此类参数。
答案 1 :(得分:1)
答案在于错误信息的这一部分:
(wrong name: copyfile/CopyFile)
即,您班级的完全限定名称为copyfile.CopyFile
。 Java要求包布局与磁盘上的文件夹布局匹配,以便它知道如何查找。
因此,您的类文件必须位于名为copyfile
的子文件夹中,然后调用为java copyfile.CopyFile
,或者您可以通过删除package copyfile;
声明在未命名的默认包中编译您的类从代码(你没有显示该行,但它必须在那里)。