To answer your question "what is the best practice here?":
The binary files (jars) do not belong to source code management. To handle this, developers usually use some build tool with dependecy management which will download the jars from remote repositories. Most popular in Java world are:
Maven - http://maven.apache.org
Gradle - http://www.gradle.org
SBT - http://www.scala-sbt.org/ (primarily for Scala, but works for Java as well)
Ant - http://ant.apache.org
The .classpath file is IDE specific (eclipse) "project" descriptor, the practice might differ from team to team, but the most common is probably to list these files in .gitignore and not to commit them. These files might contain developer specific settings that are not to be shared within a team, or developers might use different IDEs and the repository would get polluted with these files.