The attached code uses the Mahout API to do k-means clustering on the Reuters dataset and generates the initial centroids using the canopy algorithm. The parameters are exactly the same as the ones in the Scala example presented in the following link:
The code compiles without an error, but the K-means algorithm cannot initiate because the initial centroids are not being generated. This in turn is due to the fact that the TF-IDF vectors are not being generated.
Considering that this code compiles and is based on earlier Scala code that worked, it is suggestive that there is a bug in the Mahout source code that may need fixing. I thought I should bring it to your attention.
I have attached the source code, the included JAR files and the shell script (called test-kmeans-clustering-reuters-java-api.sh) to compile and run the code. The output of the shell script is located in NewsKMeansClustering-output.txt. Please note that you may need to change the path (see environmental variable JARPATH) to the JAR files in the shell script based on where you put the JARs. I also attached the output of clusterdump utility in the form of .txt files for the intermediate outputs of my code such as the TF vectors and TF-IDF vectors (see tf-vectors.txt, tfidf-vectors.txt, df-count.txt and frequency-file.txt).