I've only used Weka a bit, and it appears to be an impressive machine learning toolkit. However, its API is quite a pain to deal with.
Consider the following code that I wrote, which translates from one representation of an example to Instance, used by Weka:
public static Instance getInstance(WeatherLabeledFeatureVector featureVector, Instances instances) {
Instance inst = new DenseInstance(instances.numAttributes());
for (int i = 0; i attInfo, int capacity) {
// ...