以下是詳細步驟:
1. 創建項目
??? 1.1 打開 IntelliJ IDEA。
??? 1.2 在啟動界面,點擊 Create New Project(創建新項目)。
??? 1.3 選擇 Java,然后點擊 Next。
??? 1.4 確保 Project SDK 選擇了正確的 JDK 版本(例如 JDK 1.8 或更高版本)。
??? 1.5 點擊 Next,然后為項目命名(例如 TextSeekServer)。
??? 1.6 點擊 Finish 完成項目創建。
2. 創建包和類
?? 2.1 在 src 目錄下,右鍵點擊 New > Package,創建包 com.myth。
?? 2.2 在 com.myth 包中,右鍵點擊 New > Java Class,分別創建以下類:
??????? AESUtil.java
??????? DBUtil.java
??????? TextSeekServer.java(包含 main 函數)
3. 創建配置文件
?? 3.1 在 項目視圖 中,找到項目的根目錄(例如 TextSeekServer),右鍵點擊 New > Directory,創建目錄 resources。
?? 3.2 在 resources 目錄中,右鍵點擊 New > File,分別創建以下文件:
??????? config.properties
??????? dbconfig.properties
??????? maintenance.properties
??????? log4j2.xml
?? 3.3 將 resources 目錄標記為資源目錄
??? 右鍵點擊 resources 目錄 > 選擇 Mark Directory as > Resources Root
4. 添加 MariaDB JDBC 驅動
?? 4.1 下載 mariadb-java-client-3.1.4.jar:
??????? 從 MariaDB JDBC Driver 官方下載頁面 下載。
??????? https://mariadb.com/kb/en/about-mariadb-connector-j/
?? 4.2 將下載的 JAR 文件放到項目的 lib 目錄中:
??????? 在項目根目錄下,右鍵點擊 New > Directory,創建目錄 lib。
??????? 將 mariadb-java-client-3.1.4.jar 復制到 lib 目錄中。
?? 4.3 將 JAR 文件添加到項目的類路徑:
??????? 右鍵點擊 mariadb-java-client-3.1.4.jar,選擇 Add as Library。
??????? 在彈出的對話框中:
??????? Level:選擇 Module Library(推薦)或 Global Library
??????? Add to Module:選擇當前模塊(例如 TextSeekServer)
??????? 點擊 OK
? 4.4 驗證 lib 目錄的狀態
????? 4.4.1 打開 Project Structure(項目結構):
??????????? 進入 File > Project Structure。
??? 4.4.2 在 Modules 選項卡中:
??????????? 選擇當前模塊(例如 TextSeekServer)。
??????????? 切換到 Dependencies 選項卡。
??????????? 確認 mariadb-java-client-3.1.4.jar 已添加到模塊的依賴列表中。
??? 4.4.3 在 Libraries 選項卡中:
??????????? 確認 mariadb-java-client-3.1.4.jar 已作為庫添加到項目中
????? 4.4.4 備注 lib 目錄本身不需要被標記為 Sources Root 或
??????? Resources Root,因為它只是存放 JAR 文件的目錄。
??????? 它的作用是通過 Add as Library 將 JAR 文件添加到項目的類路徑中
5. 配置項目結構
?? 5.1 進入 File > Project Structure(項目結構)。
?? 5.2 在 Modules 選項卡中,確保 src 目錄被標記為 Sources,resources 目錄被標記為 Resources。
?? 5.3 在 Libraries 選項卡中,確認 mariadb-java-client-3.1.4.jar 已添加。
6. 配置文件內容
config.properties
# 示例配置
app.name=TextSeekServer
app.version=1.0
dbconfig.properties
# 數據庫配置
db.url=jdbc:mariadb://localhost:3306/testdb
db.user=root
db.password=123456
maintenance.properties
# 維護配置
maintenance.mode=false
maintenance.message=System is under maintenance.
log4j2.xml
<Configuration status="WARN">
??? <Appenders>
??????? <!-- 控制臺輸出 -->
??????? <Console name="Console" target="SYSTEM_OUT">
??????????? <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
??????? </Console>
??????? <!-- 文件輸出 -->
??????? <RollingFile name="File" fileName="logs/textseek-server.log"
???????????????????? filePattern="logs/textseek-server-%d{yyyy-MM-dd}-%i.log">
??????????? <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
??????????? <Policies>
??????????????? <!-- 每天生成一個新文件 -->
??????????????? <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
??????????????? <!-- 文件大小超過10MB時生成新文件 -->
??????????????? <SizeBasedTriggeringPolicy size="10 MB"/>
??????????? </Policies>
??????????? <!-- 最多保留7個日志文件 -->
??????????? <DefaultRolloverStrategy max="7"/>
??????? </RollingFile>
??? </Appenders>
??? <Loggers>
??????? <!-- 根日志記錄器 -->
??????? <Root level="info">
??????????? <AppenderRef ref="Console"/>
??????????? <AppenderRef ref="File"/>
??????? </Root>
??????? <!-- 針對TextSeekServer的日志記錄器 -->
??????? <Logger name="com.myth.TextSeekServer" level="debug" additivity="false">
??????????? <AppenderRef ref="Console"/>
??????????? <AppenderRef ref="File"/>
??????? </Logger>
??? </Loggers>
</Configuration>
根據log4j2.xml 配置文件,日志文件將輸出到 logs/textseek-server.log,并且會根據日期和文件大小進行滾動歸檔。為了確保日志能夠正確輸出,你需要創建 logs 目錄,并確保程序有權限寫入該目錄
a. 創建 logs 目錄
??? 在項目根目錄下,右鍵點擊 New > Directory,創建 logs 目錄。
??????? 目錄路徑:TextSeekServer/logs/。
??? 確保 logs 目錄位于項目的根目錄下,而不是 src 或 resources 目錄中。
b. 確保 logs 目錄的權限
??? 如果你在 Windows 系統上運行程序,確保程序有權限寫入 logs 目錄。
??? 如果你在Linux或macOS系統上運行程序,確保logs目錄的權限允許程序寫入:
??? chmod 755 logs
c. 日志配置文件的路徑
在 log4j2.xml 中,日志文件的路徑是相對路徑:
<RollingFile name="File" fileName="logs/textseek-server.log"
???????????? filePattern="logs/textseek-server-%d{yyyy-MM-dd}-%i.log">
這意味著日志文件將輸出到項目根目錄下的 logs 目錄中。
d. 運行程序并驗證日志輸出
??? 運行程序后,檢查 logs 目錄是否生成了日志文件:
??????? 主日志文件:textseek-server.log。
??????? 滾動歸檔文件:textseek-server-{日期}-{序號}.log。
??? 如果日志文件未生成,檢查以下內容:
??????? 確保 logs 目錄存在且路徑正確。
??????? 確保程序有權限寫入 logs 目錄。
??????? 檢查 log4j2.xml 配置文件是否正確加載
?e. 日志配置文件的內容
你提供的 log4j2.xml 配置文件內容是正確的,以下是關鍵點說明:
??? 控制臺輸出:日志會輸出到控制臺。
??? 文件輸出:日志會輸出到 logs/textseek-server.log,并且每天或文件大小超過 10MB 時會滾動歸檔。
??? 日志級別:
??????? 根日志記錄器的級別是 info。
??????? com.myth.TextSeekServer 的日志級別是 debug
如果在Linux或macOS系統上你希望日志文件輸出到其他目錄,可以修改 fileName 和 filePattern 的路徑。例如:
fileName="/var/logs/textseek-server.log"
filePattern="/var/logs/textseek-server-%d{yyyy-MM-dd}-%i.log"
7. 命令行程序轉換為 Swing 項目
如果要將此命令行程序轉換為 Swing 項目,只需在 TextSeekServer.java 中創建一個 Swing 窗口,并將邏輯移到 Swing 事件監聽器中。例如
TextSeekServer.java(Swing 版本)
package com.myth;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
public class TextSeekServer {
??? private static final Logger logger = LogManager.getLogger(TextSeekServer.class);
??? public static void main(String[] args) {
??????? JFrame frame = new JFrame("TextSeekServer");
??????? frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
??????? frame.setSize(400, 300);
??????? JButton button = new JButton("Test");
??????? button.addActionListener(new ActionListener() {
??????????? @Override
??????????? public void actionPerformed(ActionEvent e) {
??????????????? try {
??????????????????? // 測試 AESUtil
??????????????????? String encrypted = AESUtil.encrypt("Hello, World!");
??????????????????? String decrypted = AESUtil.decrypt(encrypted);
??????????????????? logger.info("Encrypted: " + encrypted);
??????????????????? logger.info("Decrypted: " + decrypted);
??????????????????? // 測試 DBUtil
??????????????????? Connection conn = DBUtil.getConnection();
??????????????????? logger.info("Database connection established: " + conn);
??????????????????? DBUtil.closeConnection();
??????????????? } catch (Exception ex) {
??????????????????? logger.error("Error occurred: ", ex);
??????????????? }
??????????? }
??????? });
??????? frame.getContentPane().add(button);
??????? frame.setVisible(true);
??? }
}
8. 項目結構示例
完成上述步驟后,項目結構應如下所示:
TextSeekServer/
├── src/
│?? └── com/
│?????? └── myth/
│?????????? ├── AESUtil.java
│?????????? ├── DBUtil.java
│?????????? └── TextSeekServer.java
├── resources/
│?? ├── config.properties
│?? ├── dbconfig.properties
│?? ├── maintenance.properties
│?? └── log4j2.xml
├── lib/
│?? ├── log4j-api-2.20.0.jar
│?? ├── log4j-core-2.20.0.jar
│?? └── mariadb-java-client-3.1.4.jar
└── logs/
9. 驗證目錄結構
?? 9.1 打開 Project Structure(項目結構):
??????? 進入 File > Project Structure。
?? 9.2 在 Modules 選項卡中,確保:
??????? src 目錄被標記為 Sources (非常重要)。
??????? resources 目錄被標記為 Resources(非常重要)。
?? 9.3 在 Libraries 選項卡中,確認 mariadb-java-client-3.1.4.jar 已添加。
10. 運行程序
??? 在 TextSeekServer.java 中編寫 main 方法。
??? 右鍵點擊 TextSeekServer.java,選擇 Run 'TextSeekServer.main()'。
11. 將 Java 項目編譯成可執行的 JAR 包,可以通過以下步驟完成。我們將使用
??? IntelliJ IDEA 的內置功能來打包項目,并確保所有依賴項(如
??? mariadb-java-client-3.1.4.jar)和配置文件(如 log4j2.xml 和
??? *.properties)都包含在 JAR 包中。
?? 步驟 1:配置項目結構
??? a)確保項目結構正確:
??????? src 目錄包含源代碼。
??????? resources 目錄包含配置文件(如 log4j2.xml 和 *.properties)。
??????? lib 目錄包含第三方 JAR 文件(如 mariadb-java-client-3.1.4.jar)。
??? b)在 Project Structure 中,確保 resources 目錄被標記為 Resources Root:
??????? 進入 File > Project Structure > Modules。
??????? 選擇 src 目錄,確保它被標記為 Sources。
??????? 選擇 resources 目錄,確保它被標記為 Resources。
? 步驟 2:創建 JAR 包的 Artifact
??? a)進入 File > Project Structure > Artifacts。
??? b)點擊 + 按鈕,選擇 JAR > From modules with dependencies。
??? c)在彈出的對話框中:
??????? Module:選擇你的模塊(例如 TextSeekServer)。
??????? Main Class:選擇包含 main 方法的類(例如 com.myth.TextSeekServer)。
??????? 點擊 OK。
??? d)在 Artifacts 選項卡中,確保以下內容:
??????? Output Layout 中包含了 src 目錄的編譯輸出(.class 文件)。
??????? resources 目錄的內容被包含在 JAR 包的根目錄中。
??????? lib 目錄中的 JAR 文件被包含在 JAR 包的 lib 目錄中。
??? e)點擊 Apply 和 OK 保存配置。
步驟 3:構建 JAR 包
??? a)進入 Build > Build Artifacts。(如果菜單 Build Artifacts 為灰色 表示缺少步驟 2)
??? b)選擇你剛剛創建的 Artifact(例如 TextSeekServer:jar),然后點擊 Build。
??? c)IntelliJ IDEA 會生成 JAR 包,并將其輸出到 out/artifacts/TextSeekServer_jar/ 目錄中。
步驟 4:驗證 JAR 包
??? a)打開生成的 JAR 包(例如 TextSeekServer.jar),檢查以下內容:
??????? 確保 com/myth/ 目錄中包含編譯后的 .class 文件。
??????? 確保 log4j2.xml 和 *.properties 文件位于 JAR 包的根目錄中。
??????? 確保 lib/mariadb-java-client-3.1.4.jar 文件位于 JAR 包的 lib 目錄中。
??? b)如果發現缺少文件,可以手動編輯 Artifacts 配置,確保所有需要的文件和依賴項都被包含。
步驟 5:運行 JAR 包
??? 打開終端或命令提示符。
??? 導航到 JAR 包所在的目錄:cd out/artifacts/TextSeekServer_jar
??? 運行 JAR 包:java -jar TextSeekServer.jar
步驟 6:處理依賴項
如果你的 JAR 包依賴外部 JAR 文件(如 mariadb-java-client-3.1.4.jar),可以通過以下方式處理:
方式 1:將依賴項打包到 JAR 包中
??? 在 Artifacts 配置中,確保所有依賴項都被包含在 JAR 包的 lib 目錄中。
??? 在 MANIFEST.MF 中指定類路徑:
??????? 打開 Artifacts 配置,點擊 Create Manifest 按鈕,生成 MANIFEST.MF 文件。
??????? 在 MANIFEST.MF 中添加 Class-Path 條目,例如:
Class-Path: lib/mariadb-java-client-3.1.4.jar
方式 2:使用外部依賴項
??? 將依賴項 JAR 文件放在一個單獨的目錄中(例如 lib)。
??? 運行 JAR 包時,通過 -cp 參數指定類路徑:
java -cp TextSeekServer.jar:lib/* com.myth.TextSeekServer
步驟 7:打包為可執行 JAR(包含所有依賴項)
如果你希望將所有依賴項打包到一個可執行的 JAR 文件中,可以使用 Fat JAR 或 Uber JAR 的方式:
??? a)在 Artifacts 配置中,選擇 Extract to the target JAR,將所有依賴項解壓并合并到主 JAR 文件中。
??? b)重新構建 JAR 包。
項目結構示例
打包后的 JAR 包結構如下:
TextSeekServer.jar
├── com/
│?? └── myth/
│?????? ├── AESUtil.class
│?????? ├── DBUtil.class
│?????? └── TextSeekServer.class
├── log4j2.xml
├── config.properties
├── dbconfig.properties
├── maintenance.properties
├── lib/
│?? ├── log4j-api-2.20.0.jar
│?? ├── log4j-core-2.20.0.jar
│?? └── mariadb-java-client-3.1.4.jar
└── logs/
如果程序在運行時無法找到 *.properties 文件,例如
[main] ERROR com.myth.TextSeekServer - Error loading conf
ig file: config.properties (系統找不到指定的文件。)
java.io.FileNotFoundException: config.properties (系統找不到指定的文件。)
以下是解決這個問題的詳細步驟:
1. 確保配置文件被打包到 JAR 文件中
??? 1.1 打開生成的 JAR 文件(例如 TextSeekServer.jar),檢查以下內容:
??????? 確保 config.properties、dbconfig.properties、maintenance.properties 和 log4j2.xml 文件位于 JAR 包的根目錄中。
??????? 如果這些文件缺失,說明它們在打包時沒有被正確包含。
??? 1.2 在 IntelliJ IDEA 中,確保 resources 目錄被標記為 Resources Root:
??????? 進入 File > Project Structure > Modules。
??????? 選擇 resources 目錄,確保它被標記為 Resources。
??? 1.3 在 Artifacts 配置中,確保 resources 目錄的內容被包含在 JAR 包的根目錄中:
??????? 進入 File > Project Structure > Artifacts。
??????? 選擇你的 Artifact(例如 TextSeekServer:jar)。
??????? 在 Output Layout 中,確保 resources 目錄的內容被包含。
??? 1.4 重新構建 JAR 包:
??????? 進入 Build > Build Artifacts。
??????? 選擇你的 Artifact,然后點擊 Rebuild。
2. 確保程序正確加載配置文件
在 Java 程序中,加載資源文件(如 config.properties)時,應該使用 ClassLoader 來從類路徑中加載文件,而不是直接使用文件路徑。
修改代碼以從類路徑加載配置文件
例如,在 DBUtil.java 中,修改加載配置文件的代碼:
import java.io.InputStream;
import java.util.Properties;
public class DBUtil {
??? private static Connection connection;
??? public static Connection getConnection() throws SQLException {
??????? if (connection == null || connection.isClosed()) {
??????????? Properties props = new Properties();
??????????? try (InputStream input = DBUtil.class.getClassLoader().getResourceAsStream("dbconfig.properties")) {
??????????????? if (input == null) {
??????????????????? throw new FileNotFoundException("dbconfig.properties not found in classpath");
??????????????? }
??????????????? props.load(input);
??????????? } catch (IOException e) {
??????????????? throw new RuntimeException("Error loading dbconfig.properties", e);
??????????? }
??????????? String url = props.getProperty("db.url");
??????????? String user = props.getProperty("db.user");
??????????? String password = props.getProperty("db.password");
??????????? connection = DriverManager.getConnection(url, user, password);
??????? }
??????? return connection;
??? }
??? public static void closeConnection() throws SQLException {
??????? if (connection != null && !connection.isClosed()) {
??????????? connection.close();
??????? }
??? }
}
修改 TextSeekServer.java 中的日志配置加載方式
如果 log4j2.xml 也需要從類路徑加載,確保 Log4j2 配置文件的加載方式正確:
import org.apache.logging.log4j.core.config.Configurator;
public class TextSeekServer {
??? private static final Logger logger = LogManager.getLogger(TextSeekServer.class);
??? public static void main(String[] args) {
??????? // 從類路徑加載 log4j2.xml
??????? Configurator.initialize(null, "classpath:log4j2.xml");
??????? logger.info("Starting TextSeekServer...");
??????? try {
??????????? // 測試 AESUtil
??????????? String encrypted = AESUtil.encrypt("Hello, World!");
??????????? String decrypted = AESUtil.decrypt(encrypted);
??????????? logger.info("Encrypted: " + encrypted);
??????????? logger.info("Decrypted: " + decrypted);
??????????? // 測試 DBUtil
??????????? Connection conn = DBUtil.getConnection();
??????????? logger.info("Database connection established: " + conn);
??????????? DBUtil.closeConnection();
??????? } catch (Exception e) {
??????????? logger.error("Error occurred: ", e);
??????? }
??? }
}
3. 驗證配置文件是否在 JAR 包中
??? 3.1 打開生成的 JAR 文件(例如 TextSeekServer.jar),檢查以下文件是否存在于根目錄:
??????? config.properties
??????? dbconfig.properties
??????? maintenance.properties
??????? log4j2.xml
??? 3.2 如果文件缺失,重新檢查 Artifacts 配置,確保 resources 目錄的內容被包含。
問題 1:配置文件仍然找不到
??? 確保 resources 目錄被標記為 Resources Root。
??? 確保 resources 目錄的內容被包含在 JAR 包的根目錄中。
??? 確保程序使用 ClassLoader 從類路徑加載文件。
問題 2:日志配置文件未生效
??? 確保 log4j2.xml 文件位于 JAR 包的根目錄中。
??? 確保程序使用 Configurator.initialize(null, "classpath:log4j2.xml"); 加載日志配置文件。
=====================================================================
如果你希望 resources 目錄下的配置文件(如 config.properties、dbconfig.properties 等)可以在運行 JAR 包之前由用戶修改,而不是將這些文件打包到 JAR 包中,可以通過以下方式實現:
1. 將配置文件放在 JAR 包外部
將配置文件放在 JAR 包外部的某個目錄中(例如與 JAR 包同一目錄下的 config 目錄),并在程序中動態加載這些文件。
2. 修改項目結構
??? 2.1 在項目根目錄下創建一個 config 目錄,用于存放配置文件:
TextSeekServer/
├── config/
│?? ├── config.properties
│?? ├── dbconfig.properties
│?? ├── maintenance.properties
│?? └── log4j2.xml
├── src/
│?? └── com/
│?????? └── myth/
│?????????? ├── AESUtil.java
│?????????? ├── DBUtil.java
│?????????? └── TextSeekServer.java
├── lib/
│?? ├── log4j-api-2.20.0.jar
│?? ├── log4j-core-2.20.0.jar
│?? └── mariadb-java-client-3.1.4.jar
├── logs/
│
└── out/
??? └── artifacts/
??????? └── TextSeekServer_jar/
??????????? └── TextSeekServer.jar
??? 2.2 將 resources 目錄中的配置文件移動到 config 目錄中。
3. 修改代碼以加載外部配置文件
在程序中,使用文件的絕對路徑或相對路徑來加載外部的配置文件。
示例代碼:加載外部配置文件
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;
public class DBUtil {
??? private static Connection connection;
??? public static Connection getConnection() throws SQLException {
??????? if (connection == null || connection.isClosed()) {
??????????? Properties props = new Properties();
??????????? try (InputStream input = new FileInputStream("config/dbconfig.properties")) {
??????????????? props.load(input);
??????????? } catch (IOException e) {
??????????????? throw new RuntimeException("Error loading dbconfig.properties", e);
??????????? }
??????????? String url = props.getProperty("db.url");
??????????? String user = props.getProperty("db.user");
??????????? String password = props.getProperty("db.password");
??????????? connection = DriverManager.getConnection(url, user, password);
??????? }
??????? return connection;
??? }
??? public static void closeConnection() throws SQLException {
??????? if (connection != null && !connection.isClosed()) {
??????????? connection.close();
??????? }
??? }
}
加載外部日志配置文件
如果 log4j2.xml 也需要從外部加載,可以在程序啟動時指定配置文件路徑:
import org.apache.logging.log4j.core.config.Configurator;
public class TextSeekServer {
??? private static final Logger logger = LogManager.getLogger(TextSeekServer.class);
??? public static void main(String[] args) {
??????? // 從外部加載 log4j2.xml
??????? Configurator.initialize(null, "config/log4j2.xml");
??????? logger.info("Starting TextSeekServer...");
??????? try {
??????????? // 測試 AESUtil
??????????? String encrypted = AESUtil.encrypt("Hello, World!");
??????????? String decrypted = AESUtil.decrypt(encrypted);
??????????? logger.info("Encrypted: " + encrypted);
??????????? logger.info("Decrypted: " + decrypted);
??????????? // 測試 DBUtil
??????????? Connection conn = DBUtil.getConnection();
??????????? logger.info("Database connection established: " + conn);
??????????? DBUtil.closeConnection();
??????? } catch (Exception e) {
??????????? logger.error("Error occurred: ", e);
??????? }
??? }
}
4. 打包 JAR 文件
??? 4.1 在 IntelliJ IDEA 中,確保 resources 目錄不再包含配置文件。
??? 4.2 進入 File > Project Structure > Artifacts,確保配置文件中沒有包含 config 目錄。
??? 4.3 重新構建 JAR 包:
??????? 進入 Build > Build Artifacts。
??????? 選擇你的 Artifact,然后點擊 Rebuild。
5. 運行 JAR 包
??? 5.1 將生成的 JAR 文件和 config 目錄放在同一目錄下:
your-deployment-folder/
├── config/
│?? ├── config.properties
│?? ├── dbconfig.properties
│?? ├── maintenance.properties
│?? └── log4j2.xml
├── lib/
│?? ├── log4j-api-2.20.0.jar
│?? ├── log4j-core-2.20.0.jar
│?? └── mariadb-java-client-3.1.4.jar
├── logs/
│
└── TextSeekServer.jar
???? 5.2 打開終端或命令提示符,導航到 JAR 包所在的目錄:
cd your-deployment-folder
???? 5.3 運行 JAR 包:
java -jar TextSeekServer.jar
6. 允許用戶修改配置文件
用戶可以在運行 JAR 包之前,直接編輯 config 目錄中的配置文件(如 config.properties、dbconfig.properties 等),程序會動態加載這些文件。
7. 注意事項
??? 確保 config 目錄中的配置文件路徑與代碼中的路徑一致。
??? 如果配置文件路徑需要靈活配置,可以通過命令行參數或環境變量指定配置文件路徑。例如:
java -Dconfig.path=/path/to/config -jar TextSeekServer.jar
然后在代碼中讀取 config.path 系統屬性:
String configPath = System.getProperty("config.path", "config");
String dbConfigPath = configPath + "/dbconfig.properties";