No you're wrong, I rather do this:
final GL2 gl = GLU.getCurrentGL().getGL2();
gl.glGetShaderiv(id, GL2ES2.GL_COMPILE_STATUS, intBuffer);
if (intBuffer.get(0) == GL.GL_FALSE) {
gl.glGetShaderiv(id, GL2ES2.GL_INFO_LOG_LENGTH, intBuffer);
final int length = intBuffer.get(0);
String out = null;
if (length > 0) {
final ByteBuffer infoLog = Buffers.newDirectByteBuffer(length);
gl.glGetShaderInfoLog(id, infoLog.limit(), intBuffer, infoLog);
final byte[] infoBytes = new byte[length];
infoLog.get(infoBytes);
out = new String(infoBytes);
}
throw new GLException("Error during shader compilation: " + out);
}
You compile a shader, not a program. Therefore, you have to use methods related on shaders (glGetShaderiv, ...) instead of using methods related on programs. If you want to get errors about the link, then use methods related on programs (glGetProgramiv, ...).