diff --git a/src/main/java/org/apache/maven/shared/jar/classes/JarClassesAnalysis.java b/src/main/java/org/apache/maven/shared/jar/classes/JarClassesAnalysis.java
index 8cecfe0..8931ab0 100644
--- a/src/main/java/org/apache/maven/shared/jar/classes/JarClassesAnalysis.java
+++ b/src/main/java/org/apache/maven/shared/jar/classes/JarClassesAnalysis.java
@@ -45,15 +45,19 @@
 public class JarClassesAnalysis
     extends AbstractLogEnabled
 {
+    private static final double JAVA_1_8_CLASS_VERSION = 52.0;
+
+    private static final double JAVA_1_7_CLASS_VERSION = 51.0;
+
     private static final double JAVA_1_6_CLASS_VERSION = 50.0;
 
     private static final double JAVA_1_5_CLASS_VERSION = 49.0;
 
-    private static final double JAVA_1_4_CLASS_VERSION = 47.0;
+    private static final double JAVA_1_4_CLASS_VERSION = 48.0;
 
-    private static final double JAVA_1_3_CLASS_VERSION = 46.0;
+    private static final double JAVA_1_3_CLASS_VERSION = 47.0;
 
-    private static final double JAVA_1_2_CLASS_VERSION = 45.65536;
+    private static final double JAVA_1_2_CLASS_VERSION = 46.0;
 
     private static final double JAVA_1_1_CLASS_VERSION = 45.3;
 
@@ -104,7 +108,7 @@
                     double classVersion = javaClass.getMajor();
                     if ( javaClass.getMinor() > 0 )
                     {
-                        classVersion = classVersion + 1 / (double) javaClass.getMinor();
+                        classVersion = classVersion + javaClass.getMinor() / 10.0;
                     }
 
                     if ( classVersion > maxVersion )
@@ -140,35 +144,38 @@
                 }
             }
 
-            // TODO: check these since they are > instead of >=
-            if ( maxVersion >= JAVA_1_6_CLASS_VERSION )
+            if ( maxVersion == JAVA_1_8_CLASS_VERSION )
+            {
+                classes.setJdkRevision( "1.8" );
+            }
+            else if ( maxVersion == JAVA_1_7_CLASS_VERSION )
+            {
+                classes.setJdkRevision( "1.7" );
+            }
+            else if ( maxVersion == JAVA_1_6_CLASS_VERSION )
             {
                 classes.setJdkRevision( "1.6" );
             }
-            else if ( maxVersion >= JAVA_1_5_CLASS_VERSION )
+            else if ( maxVersion == JAVA_1_5_CLASS_VERSION )
             {
                 classes.setJdkRevision( "1.5" );
             }
-            else if ( maxVersion > JAVA_1_4_CLASS_VERSION )
+            else if ( maxVersion == JAVA_1_4_CLASS_VERSION )
             {
                 classes.setJdkRevision( "1.4" );
             }
-            else if ( maxVersion > JAVA_1_3_CLASS_VERSION )
+            else if ( maxVersion == JAVA_1_3_CLASS_VERSION )
             {
                 classes.setJdkRevision( "1.3" );
             }
-            else if ( maxVersion > JAVA_1_2_CLASS_VERSION )
+            else if ( maxVersion == JAVA_1_2_CLASS_VERSION )
             {
                 classes.setJdkRevision( "1.2" );
             }
-            else if ( maxVersion > JAVA_1_1_CLASS_VERSION )
+            else if ( maxVersion == JAVA_1_1_CLASS_VERSION )
             {
                 classes.setJdkRevision( "1.1" );
             }
-            else if ( maxVersion > 0 )
-            {
-                classes.setJdkRevision( "1.0" );
-            }
 
             jarAnalyzer.getJarData().setJarClasses( classes );
         }
diff --git a/src/test/java/org/apache/maven/shared/jar/classes/JarClassesAnalyzerTest.java b/src/test/java/org/apache/maven/shared/jar/classes/JarClassesAnalyzerTest.java
index 5c8a3a8..4fa57d9 100644
--- a/src/test/java/org/apache/maven/shared/jar/classes/JarClassesAnalyzerTest.java
+++ b/src/test/java/org/apache/maven/shared/jar/classes/JarClassesAnalyzerTest.java
@@ -106,6 +106,22 @@
         assertFalse( "no debug present", jclass.isDebugPresent() );
     }
 
+    public void testAnalyzeJarVersion18()
+        throws Exception
+    {
+        JarClasses jclass = getJarClasses( "helloworld-1.8.jar" );
+
+        assertEquals( "jdkrevision", "1.8", jclass.getJdkRevision() );
+    }
+
+    public void testAnalyzeJarVersion17()
+        throws Exception
+    {
+        JarClasses jclass = getJarClasses( "helloworld-1.7.jar" );
+
+        assertEquals( "jdkrevision", "1.7", jclass.getJdkRevision() );
+    }
+
     public void testAnalyzeJarVersion16()
         throws Exception
     {
diff --git a/src/test/resources/jars/helloworld-1.7.jar b/src/test/resources/jars/helloworld-1.7.jar
new file mode 100644
index 0000000..e48a6fe
--- /dev/null
+++ b/src/test/resources/jars/helloworld-1.7.jar
Binary files differ
diff --git a/src/test/resources/jars/helloworld-1.8.jar b/src/test/resources/jars/helloworld-1.8.jar
new file mode 100644
index 0000000..f98db02
--- /dev/null
+++ b/src/test/resources/jars/helloworld-1.8.jar
Binary files differ
