content: package com.alphabugx.config;
  
  import java.io.*;
  import java.util.Properties;
  
  /**
   * 应用配置管理类
   * 用于保存和加载JDK路径等设置
   */
  public class AppConfig {
      private static final String CONFIG_FILE = "jawd_config.properties";
      private Properties properties;
      private static AppConfig instance;
      
      private AppConfig() {
          properties = new Properties();
          loadConfig();
      }
      
      public static AppConfig getInstance() {
          if (instance == null) {
              instance = new AppConfig();
          }
          return instance;
      }
      
      /**
       * 加载配置文件
       */
      private void loadConfig() {
          File configFile = new File(CONFIG_FILE);
          if (configFile.exists()) {
              try (FileInputStream fis = new FileInputStream(configFile)) {
                  properties.load(fis);
              } catch (IOException e) {
                  System.err.println("加载配置文件失败: " + e.getMessage());
                  // 使用默认配置
                  setDefaultConfig();
              }
          } else {
              // 配置文件不存在，使用默认配置
              setDefaultConfig();
          }
      }
      
      /**
       * 设置默认配置
       */
      private void setDefaultConfig() {
          // 尝试自动检测JAVA_HOME
          String javaHome = System.getProperty("java.home");
          if (javaHome != null) {
              // 如果是JRE路径，尝试找到JDK路径
              if (javaHome.endsWith("jre")) {
                  File jdkPath = new File(javaHome).getParentFile();
                  if (jdkPath.exists()) {
                      javaHome = jdkPath.getAbsolutePath();
                  }
              }
              properties.setProperty("jdk.path", javaHome);
          } else {
              properties.setProperty("jdk.path", "");
          }
          
          // 设置CFR工具路径
          properties.setProperty("cfr.path", "cfr-0.152.jar");
          
          // 保存默认配置
          saveConfig();
      }
      
      /**
       * 保存配置文件
       */
      public void saveConfig() {
          try (FileOutputStream fos = new FileOutputStream(CONFIG_FILE)) {
              properties.store(fos, "JAWD Configuration File");
          } catch (IOException e) {
              System.err.println("保存配置文件失败: " + e.getMessage());
          }
      }
      
      /**
       * 获取JDK路径
       */
      public String getJdkPath() {
          return properties.getProperty("jdk.path", "");
      }
      
      /**
       * 设置JDK路径
       */
      public void setJdkPath(String jdkPath) {
          properties.setProperty("jdk.path", jdkPath);
      }
      
      /**
       * 获取CFR工具路径
       */
      public String getCfrPath() {
          return properties.getProperty("cfr.path", "cfr-0.152.jar");
      }
      
      /**
       * 设置CFR工具路径
       */
      public void setCfrPath(String cfrPath) {
          properties.setProperty("cfr.path", cfrPath);
      }
      
      /**
       * 获取Java可执行文件路径
       */
      public String getJavaExecutable() {
          String jdkPath = getJdkPath();
          if (jdkPath.isEmpty()) {
              return "java"; // 使用系统PATH中的java
          }
          
          String osName = System.getProperty("os.name").toLowerCase();
          String javaExe = osName.contains("win") ? "java.exe" : "java";
          
          return new File(jdkPath, "bin" + File.separator + javaExe).getAbsolutePath();
      }
      
      /**
       * 获取Javac可执行文件路径
       */
      public String getJavacExecutable() {
          String jdkPath = getJdkPath();
          if (jdkPath.isEmpty()) {
              return "javac"; // 使用系统PATH中的javac
          }
          
          String osName = System.getProperty("os.name").toLowerCase();
          String javacExe = osName.contains("win") ? "javac.exe" : "javac";
          
          return new File(jdkPath, "bin" + File.separator + javacExe).getAbsolutePath();
      }
      
      /**
       * 获取Jar可执行文件路径
       */
      public String getJarExecutable() {
          String jdkPath = getJdkPath();
          if (jdkPath.isEmpty()) {
              return "jar"; // 使用系统PATH中的jar
          }
          
          String osName = System.getProperty("os.name").toLowerCase();
          String jarExe = osName.contains("win") ? "jar.exe" : "jar";
          
          return new File(jdkPath, "bin" + File.separator + jarExe).getAbsolutePath();
      }
  } 