如何将 jar 文件包含为依赖项?

时间:2021-07-16 08:19:38

标签: java jar compilation javac

有这样的布局:

.
├── lib
│   └── Calculator.jar
├── TestLib
│   ├── com
│   │   └── example
│   │       └── util
│   │           ├── Calculator.class
│   │           └── Calculator.java
│   └── manifest.txt
└── TestWeb
    └── com
        └── example
            └── Runner.java

Calculator.java

package com.example.util;

public class Calculator{
    public int add(int i, int j){
        return i + j;
    }
}

Runner.java

package com.example;

import com.example.util.Calculator;

public class Runner{
    public static void main(String[] args){

        Calculator c = new Calculator();
        System.out.println(c.add(4, 8));
    }
}

我已将 Calculator.class 中的 jar 文件制作成 lib/Calculator.jar。现在我想在 Calculator 类中使用 Runner.java 对象。所以如果我发出:

javac -cp .:lib/Calculator.jar TestWeb/com/example/Runner.java

我得到了

TestWeb/com/example/Runner.java:3: error: package com.example.util does not exist
import com.example.util.Calculator;
                       ^
TestWeb/com/example/Runner.java:8: error: cannot find symbol
        Calculator c = new Calculator();
        ^
  symbol:   class Calculator
  location: class Runner
TestWeb/com/example/Runner.java:8: error: cannot find symbol
        Calculator c = new Calculator();
                           ^
  symbol:   class Calculator
  location: class Runner
3 errors

我做错了什么?

2 个答案:

答案 0 :(得分:0)

类路径语法取决于操作系统。来自Wikipedia

<块引用>

与文件系统密切相关的命令行 类路径语法取决于操作系统。[1]例如:

在所有类 Unix 操作系统(例如 Linux 和 Mac OS X)上, 目录结构具有 Unix 语法,具有单独的文件路径 用冒号(“:”)分隔。在 Windows 上,目录结构有一个 Windows 语法,每个文件路径必须用分号分隔 (“;”)。当在清单中定义类路径时,这不适用 文件,其中每个文件路径必须用空格 (" ") 分隔, 与操作系统无关。

答案 1 :(得分:0)

如果我遗漏了您需要的任何东西,请告诉我:

goose@t410:/tmp/build$ tree -n
.
├── lib
│   └── Calculator.jar
├── TestLib
│   └── com
│       └── example
│           └── util
│               ├── Calculator.class
│               └── Calculator.java
└── TestWeb
    └── com
        └── example
            ├── Runner.class
            └── Runner.java
goose@t410:/tmp/build$ java -cp lib/Calculator.jar:TestWeb com.example.Runner
12
goose@t410:/tmp/build$ 
相关问题