从命令行使用外部库编译 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
我在从命令行编译 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