@Override
    public void simpleUpdate(float tpf) {

        float move = tpf * 1;
        boolean colliding = false;

        List<PhysicsSweepTestResult> sweepTest = bulletAppState.getPhysicsSpace().sweepTest(capsuleCollisionShape, new Transform(capsule.getWorldTranslation()), new Transform(capsule.getWorldTranslation().add(dist, 0, 0)));

        for (PhysicsSweepTestResult result : sweepTest) {
            if (result.getCollisionObject().getCollisionShape() != capsuleCollisionShape) {
                PhysicsCollisionObject collisionObject = result.getCollisionObject();
                fpsText.setText("Almost colliding with " + collisionObject.getUserObject().toString());
                colliding = true;
            }
        }

        if (!colliding) {
            // if the sweep is clear then move the spatial
            capsule.move(move, 0, 0);
        }
    }
A spatial moves and sweeps its next movement for obstacles before moving
there Run this example with Vsync enabled

@author wezrule
jme3-examples/src/main/java/jme3test/bullet/TestSweepTest.java