Java:运行JAR文件时如何获取文件的路径

2023-12-12

当我使用相对路径时,我可以从 Eclipse 运行我的 Java 程序。但是当我将它作为 JAR 文件运行时,该路径不再起作用。在我的 src/components/SettingsWindow.java 中,我有:

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("./src/files/profile.ser"));

我收到 FileNotFoundException。

我的文件目录如下所示:文件目录

我尝试过的:

String filePath = this.getClass().getResource("/files/profile.ser").toString();

String filePath = this.getClass().getResource("/files/profile.ser").getPath();

String filePath = this.getClass().getResource("/files/profile.ser").getFile().toString();

我只是将 filePath 放入new FileInputStream(filePath)但这些都不起作用,我仍然得到 FileNotFoundException。当我System.out.println(filePath)它说:files/profile.ser

当我在 src/components/SettingsWindow.java 中时,我试图获取 src/files/profile.ser 的路径


您可以获取该类的 URL:

        String path =                                                           
            String.join("/", getClass().getName().split(Pattern.quote(".")))    
            + ".class";                                                         
        URL url = getClass().getResource("/" + path);

这将产生“file:/path/to/package/class.class”或“jar:/path/to/jar.jar!/package/class.class”。您可以使用 URL 或使用

            JarFile jar =                                                       
                ((JarURLConnection) url.openConnection()).getJarFile();

and use jar.getName()获取要解析的路径以获取您的安装目录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:运行JAR文件时如何获取文件的路径 的相关文章

  • JSON - 使用Gson反序列化动态对象

    假设我有一个以下类型的 Java 类 public class MyClass public String par1 public Object par2 然后我有这个 String json par1 val1 par2 subpar1
  • Maven 配置文件相当于 Gradle

    我试图在我的 spring boot 项目构建中实现一个简单的场景 包括 排除依赖项以及根据环境打包 war 或 jar 例如 对于环境dev包括开发工具和包 jar 用于prod包战等 我知道它不再是基于 XML 的配置 我基本上可以在
  • java.lang.unsatisfiedlinkerror 无法加载 amd 64 位 .dll ia 32 位

    当我尝试在 Eclipse 上运行我的项目时 出现以下错误 它在我开发它的计算机上运行良好 但当我将其导入我的笔记本电脑时 它不起作用 这个问题已经在本网站的其他地方提出过 这个问题的主要原因似乎是环境变量设置不正确 但我检查过 它们似乎是
  • 在 Java 中使用 Apache POI XWPF 在同一个 Word 文档中横向和纵向页面

    我正在尝试使用 Java 和 Apache POI 库创建一个包含一些横向页面和一些纵向页面的 Word 文档 我可以更改所有页面的方向 但有没有办法只更改其中某些页面的方向 我尝试过使用不同的部分和主体 但无济于事 目前我已经编写了一个函
  • 通过 JDBC 调用 Sybase 存储过程时结果集为空

    我正在调用一个通过 JDBC 返回多个结果集的 Sybase 存储过程 我需要获取一个特定的结果集 其中有一列名为 结果 这是我的代码 CallableStatement cs conn prepareCall sqlCall cs reg
  • Spring 可以理解 @Inject 替换 Weld 作为 JSR-299 实现吗?

    我从几个网页中注意到 Spring 3 0 显然支持来自 JSR 330 的 Inject 由于我们确实希望在 Web 应用程序和独立应用程序的库中使用 JSR 299 语法进行依赖项注入 并且有 Weld 的替代方案 因此如果 Sprin
  • 将图像缩略图上传到服务器,而不上传整个图像

    据我所知 我在这里问的是不可能的 但我想无论如何我都会问 以防我遗漏了什么 假设您想让用户上传 JPG 图像 并且这些图像被缩放为较小的图标 并且原始图像始终被丢弃并且不再需要 有没有什么方法可以在大多数现代浏览器中普遍使用 让用户选择硬盘
  • 在 Eclipse 中导航 Java 调用堆栈

    在调试器中像GDB http sources redhat com gdb 当您在断点处停止时 您可以轻松地向上移动调用堆栈并检查相关的源和堆栈帧数据 在 Eclipse 中如何做到这一点 In the 调试视角 http www ibm
  • Selenium Webdriver 中显式等待 findElements

    登录后 页面重定向到一个页面 我想等待页面加载 我在其中按 tagName 查找元素 By inputArea By tagName input List
  • Spring @Transactional 并发

    class MyService 公共无效a 同步 某个键 b Transactional 传播 传播 REQUIRES NEW 公共无效b 数据库工作吗 除非您使用代码编织 否则这是行不通的 Spring处理事务的默认方式是通过AOP代理
  • 为什么我无法解开根节点并反序列化对象数组?

    为什么我无法通过展开根节点来反序列化对象数组 import java io IOException import java util Arrays import java util List import org codehaus jack
  • 使用 viewModel 从 ChildFragment 访问 ParentFragment 中的 ViewModel

    我正在尝试访问ParentViewModel for ParentFragment from ChildFragment using viewModels 这是我的代码 In ParentFragment class ParentFragm
  • 如何在Android Studio中关联.mp3文件

    我想根据列表视图项单击播放 mp3 文件 但是根据我的代码 我运行我的应用程序 出现此窗口 因此由于缺少音频选项 我真的不知道需要选择其中哪一个为了关联我的 mp3 文件 mainList setOnItemClickListener ne
  • 摆动刷新周期

    我试图了解何时使用重新验证 重绘 打包 令人惊讶的是 我没有找到详细的底层文档 请随意链接 到目前为止我已经明白这都是 RepaintManager 的责任 油漆 重新油漆指的是脏 干净的东西 pack validate revalidat
  • 获取运行时生成的类的字节

    我正在使用一个 Java 框架 该框架使用自定义类加载器在运行时生成一些 代理 类 我想为任何这样的类获取自定义 ClassLoader 从 loadClass 返回的与该类对应的原始字节数组 这可能吗 我知道 如果一个类作为资源存在 那么
  • 警告:无法加载 sqljdbc_auth.dll 原因:java.library.path 中没有 sqljdbc_auth

    我正在使用 Ubuntu 12 05 并尝试连接到 Windows Server 2012 来获取数据库 我的数据库名称是 jobs 电脑的IP地址是192 160 1 33 托管在1433 但是当我尝试连接时出现以下错误 WARNING
  • 使用 JPA 和 Hibernate 时 DISTINCT 如何工作

    DISTINCT 在 JPA 中使用什么列 是否可以更改它 以下是使用 DISTINCT 的 JPA 查询示例 select DISTINCT c from Customer c 这没有多大意义 不同的列是基于哪一列 它是否在实体上指定为注
  • @JsonCreator '无法找到具有名称的创建者属性',即使使用ignoreUnknown = true

    我有以下课程 JsonIgnoreProperties ignoreUnknown true public class Topic private List
  • 确保对象实现 Comparable

    我有一个小问题 想知道如何解决它 我有一个通用类Tuple
  • 使用反射 API 填充 Proto 中的地图字段

    我正在尝试编写一个模块 该模块将获取 Message Builder 和从字段名称到值的映射 并将用值填充构建器 一切正常 直到我遇到地图字段 使用 Proto3 我收到一条特定消息 我知道我可以执行该消息的字段 builder b put

随机推荐

  • Android和数据存储空间?

    我想知道我的 Android 应用程序有多少数据存储可用 我需要缓存大量文件 并且我正在考虑将其存储在共享首选项中 这样如果卸载应用程序 它就会被删除 毕竟它只是很多缓存文件 我想我也可以使用 SDCard 但是我无法控制用户在应用程序之外
  • 在 Rust 中更改树中的节点

    我正在尝试编写一个函数 在给定树结构的情况下 返回该树的副本 但节点在特定索引处发生更改 这是我到目前为止所拥有的 derive Clone pub enum Node Value u32 Branch u32 Box
  • 如何在没有 localStream 的情况下创建对等连接?

    我只想实现一个客户端发送 mediaSteam and a另一个收到了媒体Steam 所以接收者客户端不需要添加 localSteam 我只编写 pc addStream null 但不起作用 我如何通过 WebRtc 实现这一目标 不要打
  • key-id 位于签名中的密钥未签署此提交

    我正在尝试签署我的 git 提交 但是当我将它们推送到 GitHub 时 他们有Unverified徽章和 key id 位于签名中的密钥未签署此提交 有人可能想欺骗你 GPG 密钥 ID mykeyid 我发现这很神秘 在我的世界中 签名
  • 为什么 GWT 2.7 停止使用 GWT Designer?

    As per GWT 2 7 0 RC1 发行说明 GWT Designer 已弃用 我在项目中使用该工具进行一些复杂的 UI 设计 只是不知道为什么会发生这种情况以及没有它的替代方案是什么 GWT Designer 不再是 GWT 指导委
  • 从 C++ 回调到 C#

    假设我有一个用于计算 PI 的 C 库函数 pi h ifdef BUILDING DLL define DLL MACRO declspec dllexport else define DLL MACRO declspec dllimpo
  • 当后端表单验证失败时,如何在 jQuery 对话框中重新打开 Django 表单?

    我有一个 Django 表单 在用户单击网页上的链接后 我将其动态加载到 jQuery 对话框中 链接中的 href 指向仅包含表单内容的 Django 页面 而不包含整个站点布局 add note click function dialo
  • 我怎样才能用 CSS 使这个菜单居中

    我已修复此菜单 如何才能使此菜单居中 我已经尝试使用 margin 0 auto 和 float left 但它不起作用 有办法居中吗 这里我有一个演示 http jsbin com enaliw 3 edit
  • Angular:URL 更改不会第一次重新加载页面

    我知道这是一个糟糕的问题 我没有代码 但我希望有人能对此有所启发 我有一个 Angular 网站 该网站加载不同产品的销售数据 产品名称显示在 URL 中 该网站从网站中到不同产品的链接运行良好 如果我直接使用产品名称更新 URL 并按 E
  • 错误 1 ​​运算符“*”不能应用于“方法组”和“双精度”类型的操作数

    我相信我想做的事情非常简单 但我收到了错误 运算符 不能应用于 method group 和 double 类型的操作数 如果选中该复选框 我想将 dayrental 中存储的天数乘以 19 95 我收到错误消息说我不能 因为日租是一种方法
  • MongoDB:如何为集合中的每个文档设置一个新字段等于另一个字段的值[重复]

    这个问题在这里已经有答案了 我需要运行迁移脚本以将值 每个文档中已有的值 插入到同一文档的数组中 必须对我收藏的每个文档执行此操作 不需要选择查询 如何改变这个 id ObjectID 5649a7f1184ebc59094bd8b3 al
  • DirectShow - IAMStreamConfig::SetFormat 和 ICaptureGraphBuilder2::RenderStream 的调用顺序会在某些摄像机中产生问题

    在捕获和处理数据之前 我必须配置摄像机的显示分辨率 最初我是按如下方式进行的 创建了所有必要的接口 添加了相机和渲染器滤镜 RenderStream 是否具有捕获和预览 PIN 类别 然后循环遍历 AM MEDIA TYPE 结构并设置参数
  • 将字节字符串列表转换为字节数组(字节流)

    我有一个表示字节的十六进制字符串列表 其形式为 FF 我想将整个列表转换为字节流 以便我可以通过套接字 Python 3 发送它 看起来字节数组类型可以工作 但我找不到任何方法可以直接将列表转换为字节数组 我可以在循环中手动执行此操作 但我
  • Bash 搜索文件中的模式,将模式替换为包含 Git 分支名称的代码

    我有一个 README md 文件 我想在其中替换文本标识符 CODESHIP CODE 带有一行代码 特别是包含 git 分支名称的构建状态图像代码片段 我想它看起来会是这样的 放置当前分支git rev parse abbrev ref
  • 单击 css 内容属性

    以下代码在标题标记之前添加图像 单击标题之前添加的图像时 如何添加 javascript 或 jquery 代码来处理某些任务 h1 before content url smiley gif Html 代码是 h1 Hi h1 您不能将事
  • 验证两个属性相等

    是否可以验证类型的两个对象属性string是平等的使用Joi I found Joi ref 但我想知道是否还有其他方法可以做到这一点 尤其是作为Joi ref 似乎不支持any error 是的 可以检查对象的两个属性是否相同 并使用Jo
  • C# 调暗屏幕、多个 Windows 窗体的最佳方法?

    因此 我编写了代码来从父级创建一个新的 Windows 窗体 该窗体为全屏 黑色且不透明度为 80 以创建变暗效果 然后上面会显示另一个表格以显示进度 代码目前如下所示 this Enabled false frmDimScreen Bac
  • 如何制作一个脚本在我的默认 sqlite3 数据库 django 中插入数据

    我已经在 Django 中定义了我的模型和所有内容 如果用户通过我的应用程序注册 则用户可以在数据库中注册 问题是我有一个包含大量用户的 JSON 文件 我想做一项工作 允许我读取此文件并将所有用户插入我的数据库中 最好的方法是什么 如何在
  • 无法找到管道“ ” Angular2 自定义管道

    我似乎无法修复这个错误 我有一个搜索栏和一个 ngFor 我正在尝试使用这样的自定义管道来过滤数组 import Pipe PipeTransform from angular core import User from user user
  • Java:运行JAR文件时如何获取文件的路径

    当我使用相对路径时 我可以从 Eclipse 运行我的 Java 程序 但是当我将它作为 JAR 文件运行时 该路径不再起作用 在我的 src components SettingsWindow java 中 我有 ObjectInputS