java - 如何使用javac编译java包结构

标签 java command-line compilation package javac

我正在尝试编译(从命令行)一个导入我自己的另一个包的 java 包。我在关注 tutorial online但是当我尝试编译最终的 java 文件 (CallPackage.java) 时似乎出现错误。

文件结构如下:

+ test_directory (contains CallPackage.java)
   -> importpackage
       -> subpackage (contains HelloWorld.java)

这是 CallPackage.java:

/// CallPackage.java
import importpackage.subpackage.*;
class CallPackage{
  public static void main(String[] args){
  HelloWorld h2=new HelloWorld();
  h2.show();
  }
}

这是 HelloWorld.java:

///HelloWorld.java

package importpackage.subpackage;

public class HelloWorld {
  public void show(){
  System.out.println("This is the function of the class HelloWorld!!");
  }
}

尝试的步骤

  1. 进入子包,用$javac HelloWorld.java编译HelloWorld.java。
  2. 转到 test_directory 并使用 $javac CallPackage.java 编译 CallPackage.java。

这让我在最后一条命令中出错:

CallPackage.java:1: package importpackage.subpackage does not exist
import importpackage.subpackage.*;
^
CallPackage.java:4: cannot find symbol
symbol  : class HelloWorld
location: class CallPackage
  HelloWorld h2=new HelloWorld();
  ^
CallPackage.java:4: cannot find symbol
symbol  : class HelloWorld
location: class CallPackage
  HelloWorld h2=new HelloWorld();
                    ^
3 errors

如何编译这两个包?非常感谢您的帮助!

最佳答案

问题是需要为每个命令(javac 和 java)设置类路径:

尝试的步骤

  1. 不是去分包,而是从顶层编译 HelloWorld.java:

    $javac -cp 。 importpackage/subpackage/HelloWorld.java

  2. 以同样的方式编译CallPackage.java:

    $javac -cp 。调用包.java

  3. 还使用类路径运行文件:

    $java -cp 。调用包

注意:运行“$java CallPackage”会报错“Error: Could not find or load main class CallPackage”

总而言之,在每个步骤中,都必须指定类路径。这样运行后它就工作了。

关于java - 如何使用javac编译java包结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19382593/

相关文章:

java - 如何从 Java 程序中运行 .jar 文件?

java - 元素没有到达 fragment XML 中应有的位置

python - 带有 Python argparse 选项的选项?

batch-file - WinSCP "Too many parameters for command ' 打开'。”错误

涉及结构的编译错误

java - Java 中的紧凑图像编码

java - Maven:检查网站是否在部署后运行

python - 将 Python 项目变成命令行工具

用VS2012编译C程序

java - jar 文件将不会运行。在cmd中获取错误