【问题标题】:How to get var/lib/rpm/packages in Java如何在 Java 中获取 var/lib/rpm/packages
【发布时间】:2020-04-21 02:59:32
【问题描述】:

我正在使用 Java Oracle NoSQL 数据库服务器 - com.sleepycat.je

<dependency>
        <groupId>com.sleepycat</groupId>
        <artifactId>je</artifactId>
        <version>18.3.12</version>
 </dependency>

我尝试获取 Berkely DB 内容 - Centos8 docker 映像中的 RPM Packages DB

import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;

import java.io.File;

public class TempMain {
public static void main(String[] args) {
    Environment myDbEnvironment = null;

    try {
        // Open the environment, creating one if it does not exist
        EnvironmentConfig envConfig = new EnvironmentConfig();
        envConfig.setAllowCreate(true);
        myDbEnvironment = new Environment(new File("C:\\Centos8\\LayerId\\var\\lib\\rpm\\Packages"),
                envConfig);

    } catch (DatabaseException dbe) {
        //  Exception handling
    }
}
}

但我收到以下错误:

Exception in thread "main" java.lang.IllegalArgumentException: Malformed \uxxxx encoding.
at java.util.Properties.loadConvert(Properties.java:574)
at java.util.Properties.load0(Properties.java:391)
at java.util.Properties.load(Properties.java:341)
at com.sleepycat.je.dbi.DbConfigManager.applyFileConfig(DbConfigManager.java:449)
at com.sleepycat.je.Environment.setupHandleConfig(Environment.java:313)
at com.sleepycat.je.Environment.<init>(Environment.java:250)
at com.sleepycat.je.Environment.<init>(Environment.java:228)

【问题讨论】:

  • C:\\Centos8 是 CentOS 的有效路径吗?
  • 我在本地机器上保存了docker镜像并解压,然后尝试在centos8第一层存在的var/lib/rpm/Packages文件上运行这段代码
  • 但是您在哪里运行 Java 可执行文件?在 Docker 内部还是在 Windows 中?
  • Packages 是实际的 Berkeley DB 数据库文件,还是只是包含 RPM 包的目录?
  • 我将 Centos:8 docker 镜像保存到本地计算机窗口并解压。我在第一层文件夹内的“var/lib/rpm/”路径中找到了“Packages”文件。我正在尝试使用上面的 Java 获取其内容。

标签: java docker berkeley-db dnf centos8


【解决方案1】:

您的问题肯定与我推荐的路径有关

1.将 \\ 替换为 File.pathSeparator

2.在调试中检查文件是否存在,然后再使用它

【讨论】:

  • 我将 Centos:8 docker 镜像保存到本地计算机窗口并解压。我在第一层文件夹内的“var/lib/rpm/”路径中找到了“Packages”文件。我试图用上面的 Java 来获取它的内容。所以文件存在并且文件分隔符不是问题
  • 我明白了。您可以尝试使用Files.exists 来查看您的班级是否可以访问文件吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
  • 2023-03-09
  • 2014-09-07
  • 2020-10-06
  • 1970-01-01
  • 2016-11-10
  • 1970-01-01
相关资源
最近更新 更多