代码之家  ›  专栏  ›  技术社区  ›  Muslimbek Abduganiev

在构建java应用程序后,一些GUI组件不能正常工作,但在IDE测试期间一切正常。为什么?

  •  0
  • Muslimbek Abduganiev  · 技术社区  · 7 年前

    我正在从事GUI java项目,该项目包含FileChooser(与JLabel结合后成为ImageChooser)和JTextArea(在JScrollPane内部)。这两个组件都在JPanel内部。

    当我在IntelliJ Idea(2017.2.4版)中运行它时,一切都很好:

    UI when executed from IDE

    IU when executed from .jar file

    我怀疑由于我提供的相对路径,ImageIcon无法初始化:

    ...
    imagePath = "src/main/resources/" + item.getImageName();
    //item.getImageName() returns a proper image name, tested with  
    //System.out.println() and there is a proper image in that folder.
    ImageIcon img = new ImageIcon(imagePath);
    img = ImageManager.resize(img);
    ...
    //Resize function in ImageManager class
    public static ImageIcon resize(ImageIcon imageIcon, int size){
        return resize(imageIcon, size, size);
    }
    
    public static ImageIcon resize(ImageIcon icon){
        return resize(icon, defaultSize);
    }
    

    这是路径问题吗?

    附笔。

    1 回复  |  直到 4 年前
        1
  •  1
  •   Thibstars RJA programer    7 年前

    没错,在jar中获取资源的方式有问题。

    ImageIcon img = new ImageIcon(this.getClass().getClassLoader().getResource(item.getImageName()));
    

    此方法支持相对路径。只要确保你的 src/main/resources