如何从命令行从包中包含类的闪存驱动器运行java程序?

如何从命令行从包中包含类的闪存驱动器运行java程序?,java,Java,我有一个任务,我必须在闪存驱动器中提交我的代码 我在eclipse中完成了所有的编码并获得了所有的输出。我试着通过命令行运行它,它运行正常。我将所有java文件和类文件复制到闪存驱动器,并通过命令行再次尝试,它在我的笔记本电脑中工作。但是,当我把它放在我的桌面计算机上并通过命令行运行时,它无法识别包中的类 我有一个包a1.cis568在这个包下我有几个类。主类为A1,其他类为圆,点,平面圆,EHashtable,CHashtable,在同一包中 我必须使用命令行上的以下行通过闪存驱动器编译和运行

我有一个任务,我必须在闪存驱动器中提交我的代码

我在eclipse中完成了所有的编码并获得了所有的输出。我试着通过命令行运行它,它运行正常。我将所有java文件和类文件复制到闪存驱动器,并通过命令行再次尝试,它在我的笔记本电脑中工作。但是,当我把它放在我的桌面计算机上并通过命令行运行时,它无法识别包中的类

我有一个包a1.cis568在这个包下我有几个类。主类为
A1
,其他类为
平面圆
EHashtable
CHashtable
,在同一包中

我必须使用命令行上的以下行通过闪存驱动器编译和运行我的程序(这样做时不必更改任何类路径)


当我搜索解决方案时,我发现我可以在闪存驱动器上安装JDK并运行代码。我尝试安装JDK,但它并没有解决我的问题。

如果您使用eclipse,您可以轻松地将项目导出为可运行的jar。将jar文件和源文件复制到闪存驱动器。通过以下命令行执行


java-jar[runnable jar filename]

如果您使用的是eclipse,那么您可以轻松地将项目导出为可运行jar。将jar文件和源文件复制到闪存驱动器。通过以下命令行执行


java-jar[runnable jar filename]

您似乎在编译源代码时遇到了问题

由于您将包层次结构导航到
A1.java
所在的位置,然后尝试编译,因此编译器无法找到
A1
所依赖且不在同一目录中的其他类。您必须告诉它在哪里可以找到它们,这是使用
javac
的选项
-sourcepath
完成的

因此,从类的同一位置
A1.java
可以使用以下内容编译代码:

E:> javac -d . A1.java -sourcepath ..\..\
E:> javac -d . a1\cis568\A1.java
此处
。\..\
用于说明源代码可以在实际目录之上的两个目录中找到(基于您的包树
a1\cis568\

但是为了让事情变得简单,我建议您从源代码树的根开始编译。在这种情况下,
sourcepath
classpath
是默认的实际工作目录

因此,在commad提示符中导航到包/目录
a1
所在的位置,然后按如下方式编译:

E:> javac -d . A1.java -sourcepath ..\..\
E:> javac -d . a1\cis568\A1.java
comipiler应该能够找到
A1
依赖的所有类(假设它们都存在于源代码根目录中的正确包中)

E:> java a1.cis568.A1

您似乎在编译源代码时遇到了问题

由于您将包层次结构导航到
A1.java
所在的位置,然后尝试编译,因此编译器无法找到
A1
所依赖且不在同一目录中的其他类。您必须告诉它在哪里可以找到它们,这是使用
javac
的选项
-sourcepath
完成的

因此,从类的同一位置
A1.java
可以使用以下内容编译代码:

E:> javac -d . A1.java -sourcepath ..\..\
E:> javac -d . a1\cis568\A1.java
此处
。\..\
用于说明源代码可以在实际目录之上的两个目录中找到(基于您的包树
a1\cis568\

但是为了让事情变得简单,我建议您从源代码树的根开始编译。在这种情况下,
sourcepath
classpath
是默认的实际工作目录

因此,在commad提示符中导航到包/目录
a1
所在的位置,然后按如下方式编译:

E:> javac -d . A1.java -sourcepath ..\..\
E:> javac -d . a1\cis568\A1.java
comipiler应该能够找到
A1
依赖的所有类(假设它们都存在于源代码根目录中的正确包中)

E:> java a1.cis568.A1

当您尝试运行它时,您会遇到什么错误?当我运行main类(A1.java)时,它不会识别我在A1.java中创建的其他类对象,它会显示“A1.java:120:error:not find symbol PlaneCircle pcr5=new PlaneCircl(po5,9999f)”,这与我在A1.java中使用的其他类的对象相同。在命令行中给我42个错误。当您尝试运行它时,您会遇到什么错误?当我运行main class(A1.java)时,它无法识别我在A1.java中创建的其他类对象,它会显示“A1.java:120:error:not find symbol PlaneCircle pcr5=new PlaneCircl(po5,9999f)”这与我在A1.java中使用的其他类的对象相同。在命令行中给了我42个错误。我实际上对这个问题失去了希望,但谢谢你的回答。我试过这个。但当我使用jar文件时,我必须使用A1.jar在命令行中执行。我的意见书没有使用它。它使用“javac-d.A1.java”。我很困惑,闪存驱动器是如何工作的。但是
A1.java
不应该存在于顶级目录中。它必须位于
a1/cis568/a1.java
中。要么把A1类放在一个未修改的包中,要么使用
javacA1/cis568/A1.java
我实际上对这个问题失去了希望,但感谢您的回答。我试过这个。但当我使用jar文件时,我必须使用A1.jar在命令行中执行。我的意见书没有使用它。它使用“javac-d.A1.java”。我很困惑,闪存驱动器是如何工作的。但是
A1.java
不应该存在于顶级目录中。它必须位于
a1/cis568/a1.java
中。要么将A1类放在未命名的包中,要么使用
javacA1/cis568/A1.java