IDEA 项目打成jar包

本文介绍了一个在IDEA中正常运行的项目如何打包成jar,并解决打包后无法访问文件的问题。通过设置绝对路径及使用getResource()方法访问资源文件,详细讲述了配置jar包、添加模块输出和依赖库的过程,确保项目及其依赖正确打包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本来IDE里面运行正常的项目,打包成jar后经常访问不到文件,现记录解决方法。
project目录结构:

TestPro\
    bin
    lib
    src\
        com.folmarcher\         \\包名
            Test.java
        files\
            logo.icon

那么,因为所有的类都在同一个包名下,就都可以使用绝对路径来访问logo.icon,例如这样的路径:

String icon= “\files\logo. png”;
//顺便说一下,JFrame设置左上角icon,好像只能用png格式图片,.icon格式是不行的,

路径前面的“/”表明使用绝对路径,即当前类的顶级package的同级目录,即这里的src/目录下,但是,这样还不行,程序里面还要使用 getResource() 方法,来访问文件。

  • Test.java
package com.folmarcher;

import javax.imageio.ImageIO;
import javax.swing.*;

public class Test extends JFrame {

    String icon = "/files/logo.png";

    public static void main(String[]args){
        Test t = new Test();
        t.launch();
    }

    public void launch(){
        try{
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            //Test.class得到Test类的目录,然后再访问就没有问题了
            //或者用,this.getClass().getResource();也行
            //但是注意这两种方法得到的都只是 “当前” 类Test或对象t的目录,
            this.setIconImage(ImageIO.read(Test.class.getResource(icon)));
        }   catch(Exception e){
            e.printStackTrace();
        }
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300,200);
        setVisible(true);
    }
}

这样路径就没问题了,运行如图,左上角图标修改成功有图有真相

接下来就是在ItellijIDEA里面打成jar包。

  1. 进入project structure,如下操作
    有图有真相
    这里写图片描述

  2. 然后,给jar包命名,然后点击+号,点击module output 添加项目,这里为TestPro

  3. 点+号,选择Extracted Directory添加项目依赖的jar包,另说一下,这个jar包我放在lib/目录下面的,然后在module setting里面添加到了依赖目录里面了,外部jar包只要放在这里就能使用,添加方法如下:
    这里写图片描述
    点了加号后,选择JARs or directories,然后选择TestPro项目里面的lib目录,然后选择类型当然是jar Directory
    这里写图片描述
    完了lib目录就会出现在 dependencies中,记得要勾选lib哦
    这里写图片描述
  4. 好了,继续打包我们的jar,,,项目添加了,依赖的jar包也添加了,那个files目录不用添加,会自动打包进去。然后就是选择好main class,选择放置manifest file的目录,这都不用说。
  5. 说一下这个classpath:
    这里写图片描述
    这是配置依赖的jar包的路径使用的,目测像之前设置好依赖目录 lib 之后,选择完jar包 这里会自动填好。所以我还没用到。。。
  6. 然后就是 build ,选择Build Artifacts,rebuild,这就完了啊,然后就去out目录里面找生成的jar包就行了,
  7. jar包生成了记进去看看目录结构有没有错,我们这里正确的应该是:
 test.jar/
         com.folmarcher/
             Test.class
         files/
             logo.png
         META-INF/
             menifest.mf

ps: 虽然这样做基本没错过,但是有时候还是会出岔子,建议把项目的编译class删除,重新编译,生成的jar包也删除,重新build,然后基本能解决,再不然,俺也就没辙了。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值