You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by "Jean-François El Fouly (JIRA)" <ji...@apache.org> on 2017/06/27 21:35:00 UTC

[jira] [Updated] (NETBEANS-19) GUI Designer + Maven: icons imported in the wrong directory

     [ https://issues.apache.org/jira/browse/NETBEANS-19?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jean-François El Fouly updated NETBEANS-19:
-------------------------------------------
    Description: 
An annoying and tricky little bug.

h1. Nominal scenario (NetBeans non-Maven project)
# File > New Project...
#Java | Java application (You could uncheck Create Main Class)
#New > JFrame Form...
#In the designer drag a JLabel
#For the icon property click "..."
#Click Import to Project...
#Choose an icon then Finish
#The icon is copied along the java source file
#Run
#Everybody happy. It works

h1. Maven project
#File > New Project...
#Maven | Java application
#New > JFrame Form...  (Default values OK)
#In the designer drag a JLabel
#For the icon property click "..."
#Click Import to Project...
#Choose an icon then Finish
#The icon is copied along the java source file
#Run
#It crashes with a NullPointerException

h2. Manual remediation
#In the project create src/main/resources
#Move the icon to this directory (same package as it was under src/main/java)
#NetBeans detects this and adds "Other Sources" to the project tree
#mvn clean (to force rebuild)
#Now it works

h1. Rationale
Importing an icon and associating to a JLabel generates code such as this:

{{        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/test/mavenproject1/bookmark.png"))); // NOI18N}}

But the maven compiler plugin will not copy the icon to target/classes so target/classes contains the classes but not the image. So the code above causes a NPE.

h2.Bottom line
In a Maven project icons should not be imported to src/main/java but to src/main/resources, same package.

This small but annoying bug is not a regression: it can easily be reproduced in 8.2


> GUI Designer + Maven: icons imported in the wrong directory
> -----------------------------------------------------------
>
>                 Key: NETBEANS-19
>                 URL: https://issues.apache.org/jira/browse/NETBEANS-19
>             Project: NetBeans
>          Issue Type: Bug
>          Components: apisupport - Maven, guibuilder - Code
>    Affects Versions: 8.2, 9.0
>         Environment: Windows 7 Professional
> JDK 1.8.0_111-b14
> Maven 3.3.3
>            Reporter: Jean-François El Fouly
>            Priority: Minor
>
> An annoying and tricky little bug.
> h1. Nominal scenario (NetBeans non-Maven project)
> # File > New Project...
> #Java | Java application (You could uncheck Create Main Class)
> #New > JFrame Form...
> #In the designer drag a JLabel
> #For the icon property click "..."
> #Click Import to Project...
> #Choose an icon then Finish
> #The icon is copied along the java source file
> #Run
> #Everybody happy. It works
> h1. Maven project
> #File > New Project...
> #Maven | Java application
> #New > JFrame Form...  (Default values OK)
> #In the designer drag a JLabel
> #For the icon property click "..."
> #Click Import to Project...
> #Choose an icon then Finish
> #The icon is copied along the java source file
> #Run
> #It crashes with a NullPointerException
> h2. Manual remediation
> #In the project create src/main/resources
> #Move the icon to this directory (same package as it was under src/main/java)
> #NetBeans detects this and adds "Other Sources" to the project tree
> #mvn clean (to force rebuild)
> #Now it works
> h1. Rationale
> Importing an icon and associating to a JLabel generates code such as this:
> {{        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/test/mavenproject1/bookmark.png"))); // NOI18N}}
> But the maven compiler plugin will not copy the icon to target/classes so target/classes contains the classes but not the image. So the code above causes a NPE.
> h2.Bottom line
> In a Maven project icons should not be imported to src/main/java but to src/main/resources, same package.
> This small but annoying bug is not a regression: it can easily be reproduced in 8.2



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)