Java Implementation of Sieve of Eratosthenes algorithm
Using vertical spaces (new line) to group related code will help to easier read your code.  
if(primeNumbers[i] == true) the checking with == true is superfluous because the condition of the if is a boolean one, so you can simplify this to if(primeNumbers[i])  



- instead of using maxPrime here  

    boolean [] primeNumbers = new boolean [maxPrime];
    Arrays.fill(primeNumbers, true) 


you should take advantage of the computed int maxNumToTest like you did in the first loop. You should also add this computed value as the end of the inner loop and the result loop like so    

    int maxNumToTest = (int) (Math.floor(Math.sqrt(maxPrime)));        
    boolean [] primeNumbers = new boolean [maxNumToTest];
    Arrays.fill(primeNumbers, true);

    for(int i = 2; i &lt;= maxNumToTest; i++) {
        if (primeNumbers[i]) {
            for (int j = i * i; j &lt;= maxNumToTest; j += i) {
                primeNumbers[j] = false;
            }        
        }
    }
    long stop = System.nanoTime();
    for(int i = 2; i &lt;= maxNumToTest; i++) {
        if(primeNumbers[i]) {
            System.out.print((i) + ", ");
        }
    }



- putting everything int main() should be avoided. The current code could be divided into 3 methods:  


reading the input
computing the primes
writing the output  

In this way each method has a single responsibility and is easier to read and to maintain.