访问jar内的图像

2023-12-15

第一的。我知道已经存在各种关于如何访问 jar 文件内的图像的主题。 第二。我尝试了很多选择,但没有一个不起作用。我当然知道我在某个地方犯了错误。你能帮助我理解我做错了什么吗?

所以,我有一个名为“j”的原型项目,它只包含一个 java 类 - Client。 客户端尝试访问图像 good.png。我将所有内容打包到可执行 jar 文件后,客户端无法访问文件。 我在 eclipse 中工作,并使用 ant。

j/
-src/
--com/
---pupcom/
----Client.java
-images/
--good.png
-build.xml
-.classpath
-.project  

com.pupcom.Client 包含

package com.pupcom;
//imports;
public class Client {
    public static void main(String [] a) {
        new Client();
    }
    public Client() {
        URL imageURL =  getClass().getClassLoader().getResource("images"+File.separator+"good.png");
        if(imageURL != null){
            Image image = Toolkit.getDefaultToolkit().getImage(imageURL);
            if(image != null){
                System.out.println("Complete!");
            }else{
                System.out.println("image == null");
            }
        }else{
            System.out.println("imageURL == null");
        }
    }
}

构建.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project name="j" basedir=".">
    <property name="src.dir" value="src"/>
    <property name="build.dir" value="build"/>
    <property name="main-class" value="com.pupcom.Client"/>
    <property name="jar.name" value="j.jar"/>
    <target name="clean">
        <delete dir="${build.dir}"/>
        <delete file="${jar.name}"/>
    </target>
    <target name="compile" depends="clean">
        <mkdir dir="${build.dir}"/>
        <mkdir dir="${build.dir}/images"/>
        <copy todir="${build.dir}/images">
            <fileset dir="images" />
        </copy>
        <javac srcdir="${src.dir}" destdir="${build.dir}" />
    </target>
    <target name="run" depends="jar">
            <java  jar="${jar.name}" fork="true"/>
        </target>
    <target name="jar" depends="compile">
        <jar destfile="${jar.name}">
            <fileset dir="${build.dir}" />
            <manifest>
                <attribute name="Main-Class" value="${main-class}"/>
            </manifest>
        </jar>
    </target>
</project>

我还使用了这些行:

URL imageURL =  getClass().getClassLoader().getResource(File.separator + "images"+File.separator+"good.PNG");
URL imageURL =  getClass().getClassLoader().getResource("good.PNG");
URL imageURL =  getClass().getResource(File.separator + "images"+File.separator+"good.PNG");
URL imageURL =  getClass().getResource("good.PNG");
URL imageURL =  Client.class.getResource(File.separator + "images"+File.separator+"good.PNG");
URL imageURL =  Client.class.getResource("good.PNG");
URL imageURL =  Client.class.getClassLoader().getResource(File.separator + "images"+File.separator+"good.PNG");
URL imageURL =  Client.class.getClassLoader().getResource("good.PNG");

谢谢你的帮助!!!!!!!!!!

感谢 Marko Topolnik,通过将“File.separator”替换为“/”解决了该问题。 非常感谢马尔科·托波尔尼克!!!!


  1. 不要使用File.separator in getResource() - it always takes /(将其视为 URL HREF)。
  2. 路径前缀为/确保类加载器从类路径的根目录开始搜索,而不是相对于类的包进行搜索。
  3. 检查一下good.PNG是正确的情况。这在 Windows 文件系统上并不重要,但是getResource()区分大小写。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

访问jar内的图像 的相关文章

随机推荐

  • Android 崩溃报告中的奇怪堆栈

    我收到一些来自 android 的崩溃报告 带有 java lang NullPointerException 但是我不明白 stacktrace 中的 null 是什么意思 below at null formatElapsedTime
  • matplotlib 或其他 python 包中的 3D 饼图

    有没有办法在 matplotlib 中渲染 3D 饼图 或者是否有可以生成 3D 饼图的 Python 包 EDIT 我其实已经知道了pygooglechart 但我正在寻找可以离线完成的东西 我很抱歉忘记包含此信息 对于那些提供pygoo
  • C++ 中的逗号运算符和逗号分隔符[重复]

    这个问题在这里已经有答案了 可能的重复 all 时逗号运算符不充当逗号运算符吗 逗号 何时充当运算符 何时充当分隔符 其后果是什么 如果可能 请也为两者提供小例子 逗号在函数调用 函数声明 初始值设定项和变量声明中充当分隔符 f a b i
  • 将数据库中特定模式的所有内容授予 PostgreSQL 中的组角色

    使用 PostgreSQL 9 0 我有一个名为 staff 的组角色 并且希望向该角色授予特定模式中表的所有 或某些 权限 没有以下工作 GRANT ALL ON SCHEMA foo TO staff GRANT ALL ON DATA
  • 我如何学习如何在 bash 中正确引用?

    当我编写 bash 脚本时 我经常对引用和评估的规则感到困惑 我知道一些基础知识 比如 和 和 之间的区别 但我似乎仍然经常出错 并且不得不尝试用各种不同的方式来表达同一件事 我通常可以通过蛮力解决任何个人问题 但我认为我的概念模型必须以某
  • Windows Phone 7 - 电话呼叫连接和电话呼叫断开时触发的事件

    我正在为 Windows Mobile 7 编写一个应用程序 它需要有关 何时发出语音呼叫 和 何时挂断或断开语音呼叫 的信息 是否有任何 API 或事件 触发器可以为我提供此信息 当前的 SDK 不提供此功能 通常 由于沙盒环境默认不提供
  • FastAPI 重定向给出方法不允许错误

    我创建了一个登录路径 在其中发布表单数据并设置 cookie 设置cookie后 我重定向到 main 在那里我得到 detail Method Not Allowed 作为回应 app post login async def login
  • ViewChild - 无法在 Angular 2 RC 1 JavaScript 中工作

    ViewChild 无法在 Angular 2 RC 1 JavaScript 中工作 我用过
  • RibbonApplicationMenu:摆脱 AuxiliaryPane

    碰巧我正在开发的应用程序不对文档进行操作 因此不需要在应用程序菜单中显示最近打开的文档列表 但是 令人烦恼的是 没有现成的房产RibbonApplicationMenu隐藏未使用的类AuxiliaryPane 奇怪的是 该属性确实存在 但被
  • 单击关闭按钮时隐藏表单而不是关闭

    When a user clicks the X button on a form how can I hide it instead of closing it 我努力了this hide in FormClosing但它仍然关闭表单 L
  • Outlook 2013“运行脚本”规则已消失

    我在 Outlook 2013 中有一些工作规则 然而 在我的笔记本电脑前几天崩溃后 我无法再运行任何规则 它们根本不起作用 我什至没有收到调试通知 检查我的宏后 我发现当我尝试单击我拥有的任何脚本时 我不断收到消息 此操作在当前模式下不可
  • iOS XMPP 框架与 Openfire Server 获取所有注册用户

    for my IOS我正在使用的聊天应用程序Openfire服务器 我正在检索特定用户好友列表 但现在我想检索所有注册用户Openfire服务器 请帮助我并提前致谢 最后 我通过使用用户名搜索用户找到了替代答案 1 对于每个联系人 我都会添
  • 如何在高分辨率设备上使用媒体查询

    我制作了一个简单的响应式网站 或多或少 我使用过媒体查询 media only screen and max width 699 99px 现在我知道当分辨率小于 699 99px 时 这会激活其中的 css 所以在电脑上没问题 但在手机上
  • 散景,套索选择表更新

    我希望每个人都做得很好 我正在尝试开发 Bokeh 交互 选择散点图的一部分将更新表格 我使用了 Bokeh 文档中的大量示例代码 我的工作场所正在运行旧版本的 Bokeh 0 12 5 因此我必须更改自定义 JS 中的最后一行 从 s2
  • Pandas:使用 Append 添加新列并使另一个全为 NaN

    我大约一周前才开始学习 pandas 现在我一直在努力处理 pandas 数据框 我的数据如下所示 State NY CA Other Total Year 2003 450 50 25 525 2004 300 75 5 380 2005
  • 在 Pandas 中合并两行(一行有值,另一行 NaN)

    我知道以前也有人问过类似的问题 如何合并数据框中的两行pandas等 但我仍然在努力执行以下操作 除了包含许多行的 pandas 数据框 team token day1 day2 day3 day4 0 abc 1 NaN NaN NaN
  • 如何获取客户端 IP 地址的时区偏移量

    我想为我的网络应用程序获取客户 IP 地址的时区偏移量 我尝试过使用 Javascripts getTimezone 函数 但是 某些客户端的时区或时间设置不正确 我想获取偏移量并根据客户端的时区将一些信息返回给客户端 感谢您花时间阅读问题
  • send() 在 Ruby 中做什么?

    有人可以告诉我下面的片段是什么吗 obj send method name 是并且确实吗 send向类层次结构中的对象实例及其祖先发送消息 直到某个方法做出反应 因为它的名称与第一个参数匹配 实际上 这些行是等效的 1 send 2 1 2
  • 如何测试依赖于argparse的Python类?

    下面的粘贴包含来自三个单独的 Python 文件的相关片段 第一个是从命令行调用的脚本 它在给定某些参数的情况下实例化 CIPuller 发生的情况是脚本被调用 类似于 script py ci 其他参数将被 argparse 吞掉 第二个
  • 访问jar内的图像

    第一的 我知道已经存在各种关于如何访问 jar 文件内的图像的主题 第二 我尝试了很多选择 但没有一个不起作用 我当然知道我在某个地方犯了错误 你能帮助我理解我做错了什么吗 所以 我有一个名为 j 的原型项目 它只包含一个 java 类 C