Java 将类编译到其他文件夹中

Java 将类编译到其他文件夹中,java,javac,Java,Javac,我有一个包含Computer.java类的文件夹结构 MY_JAVA_PACKAGES/com/matteo/hardware/Computer.JAVA 还有一个名为MY_JAVA_SOURCES的外部目录,我想在其中插入已编译的类 我的Java书籍告诉我在我的Java源文件夹中的命令行中使用它 javac -d $HOME/MY_JAVA_PACKAGES Computer.java 但是由于编译器找不到Computer.java文件,所以我开始认为错误可能是由目录名引起的,所以我在每个目

我有一个包含Computer.java类的文件夹结构

MY_JAVA_PACKAGES/com/matteo/hardware/Computer.JAVA

还有一个名为MY_JAVA_SOURCES的外部目录,我想在其中插入已编译的类

我的Java书籍告诉我在我的Java源文件夹中的命令行中使用它

javac -d $HOME/MY_JAVA_PACKAGES Computer.java
但是由于编译器找不到Computer.java文件,所以我开始认为错误可能是由目录名引起的,所以我在每个目录外使用
pwd
命令来知道我的基本目录是什么,我得到了“/home/matteo”因此,我在MY_JAVA_的源代码中尝试了这一点,看看会发生什么

javac -d $home/matteo/MY_JAVA_PACKAGES Computer.java

但是我仍然得到了相同的错误。

如果您在
MY_JAVA_SOURCES
中,那么
javac
找不到
Computer.JAVA
,因为该文件位于
MY_JAVA_PACKAGES/com/matteo/hardware/
中。您需要指定文件的完整路径(或相对于当前目录的路径)。顺便说一句:使用名称中带有源代码的东西作为放置编译文件的位置是非常奇怪的。我猜你是
Computer.java
文件应该放在
MY\u java\u SOURCES/com/matteo/hardware/
中。这是在MY\u java\u SOURCES中编译Computer.java之后从我的书中翻译过来的->“这样,我们在MY\u java\u PACKAGES目录中创建结构com/matteo/hardware,文件将放在Computer.class中”你说得对,my.java在my_java_SOURCES中,通过shell命令“javac-d$HOME/my_java_PACKAGES Computer.java”我在dir my_java_PACKAGES中创建了新的结构,如果你的源代码在
my_java_SOURCES
中,那么你是从目录
my_java_SOURCES
编译的,然后您应该使用`javac com/matteo/hardware/Computer.java来编译该文件。这项工作是在com/matteo/hardware中创建file.class,但我希望使用-d标志将com/matteo/hardware/Computer.class结构放在MY_java_PACKAGES目录中。书使用的外壳是
[thp@localhostMY_JAVA_SOURCES]$javac-d$HOME/MY_JAVA_PACKAGES Computer.JAVA