Assuming you have a CLProgram object (called "program" in the examples below), you have two options:
1) Using the high level API:
CLKernel[] kernels = program.createKernelsInProgram();
2) Using the low level API:
IntBuffer numBuffer = BufferUtils.createIntBuffer(1);
clCreateKernelsInProgram(program, null, numBuffer);
int num_kernels = numBuffer.get(0);
if ( num_kernels == 0 )
return null;
PointerBuffer kernelIDs = BufferUtils.createPointerBuffer(num_kernels);
clCreateKernelsInProgram(program, kernelIDs, null);
CLKernel[] kernels = new CLKernel[num_kernels];
for ( int i = 0; i < num_kernels; i++ )
kernels[i] = program.getCLKernel(kernelIDs.get(i));
return kernels;
You can of course skip the first call to clCreateKernelsInProgram if you already know the number of kernels in the program.