Skip to main content


Showing posts from 2017

Java Comment //$NON-NLS-1$

$NON-NLS x$ is specifically for externalization and internationalization. It marks a string as being inappropriate for externalization. Eclipse and potentially other IDEs can be configured to present warnings when strings are hardcoded into a program so that programmers remember to externalize. NLS stands for National Language Support. The number after $NON-NLS- signifies which string on the tagged line the tag is for. The number 1 works for you, likely because there is only 1 string on the line your are trying to tag. If you had 2 strings on the same line, you can, for example, tag only the second string using $NON-NLS-2$. //Warning on "baz" foo("bar","baz"); //$NON-NLS-1$ //Warning on "bar" foo("bar","baz"); //$NON-NLS-2$ //No warnings foo("bar","baz"); //$NON-NLS-1$  //$NON-NLS-2$ //Warning on "baz" (apparently the slashes are required even with multiple tags)

Create Runnable Jar - Eclipse Options

When exporting to a Runnable Jar, there are three options in eclipse Helios. Extract required libraries into JAR Package required libraries into JAR Copy required libraries into sub folder next to JAR. What are differences : Extract required libraries into JAR  - Extracts the actual  .class  files from the libraries your app uses and puts those  .class  files inside the runnable JAR. So, the runnable JAR will not only contain the  .class  files of your application, but also the  .class  files of all the libraries your application uses. Package required libraries into JAR  - Puts the actual  JAR files  of the libraries into your runnable JAR. Normally, a JAR file within a JAR file cannot be loaded by the JVM. But Eclipse adds special classes to the runnable JAR to make this possible. Copy required libraries into sub folder next to JAR  - Keeps the library JARs completely separate from the runnable JAR, so the runnable JAR will only contain the  .class  files of your app

Java toString()

toString() public String toString() { StringBuilder builder = new StringBuilder(); try { Class e = Class.forName(this.getClass().getName()); builder.append(this.getClass().getSimpleName() + " [ ").append( System.getProperty("line.separator")); while (e.getSuperclass() != null) { Field[] aClassFields = e.getDeclaredFields(); Field[] arg3 = aClassFields; int arg4 = aClassFields.length; for (int arg5 = 0; arg5 < arg4; ++arg5) { Field field = arg3[arg5]; field.setAccessible(true); builder.append("\t") .append(field.getName()) .append(" = ") .append(field.getName() .matches("(?i:.*password.*)") ? "<password_field>" : field.get(this)).append(",") .append(System.getProperty("line.separator")); } e = e.getSuperclass(); } builder.append("]"); } catch