从命令行使用外部库编译 java 程序

Compiling java program with external libraries from command line

我在从命令行编译 java 程序时遇到困难。该程序使用外部库,我在编译该程序时没有遇到任何问题。但是,在 运行 程序上,会生成以下错误:

C:\Users\...\App> javac -d bin -cp lib/json.jar src/*.java

C:\Users\...\App> java src/App.java
src\App.java:3: error: package org.json does not exist
import org.json.*;
^
src\App.java:35: error: cannot find symbol
            JSONObject obj = new JSONObject(jsonString);
            ^
  symbol:   class JSONObject
  location: class App
src\App.java:35: error: cannot find symbol
            JSONObject obj = new JSONObject(jsonString);
                                 ^
  symbol:   class JSONObject
  location: class App
3 errors
error: compilation failed

C:\Users\...\App> 

文件结构如下所示:

如何从命令行使用外部库编译我的程序?

更新

我已经按照建议重新安排了文件结构,现在

但是编译程序还是报错

C:\Users\...\App\src>javac -d ..\bin -cp lib\json.jar App.java

C:\Users\...\App\src>java -cp ..\bin:.\lib\json.jar App.java
App.java:3: error: package org.json does not exist
import org.json.*;
^
App.java:35: error: cannot find symbol
            JSONObject obj = new JSONObject(jsonString);
            ^
  symbol:   class JSONObject
  location: class App
App.java:35: error: cannot find symbol
            JSONObject obj = new JSONObject(jsonString);
                                 ^
  symbol:   class JSONObject
  location: class App
3 errors
error: compilation failed

不是java xxx.java,是java SomeNameoOfTheClassFileName

点击Java Projects面板下Referenced Libraries右侧的添加按钮即可:

然后就可以成功导入org.json.*了。然后你可以点击VSCode的top-right上的Run Java按钮,Java扩展会帮你自动编译java代码。

或者你只是想手动编译java文件,你可以阅读this article.

根据第一张图片的结构,它会是这样的:

第一个

javac -cp lib\json.jar -d classes src\App.java

之后,在 README.md 旁边创建一个 manifest.txt 并包含:

Main-Class: App  //if your App.java has package src, it will be src.App
Class-Path: lib\json.jar
//need keep a blank line here

然后

jar cfm App.jar manifest.txt -C classes .

最后

java -jar App.jar