diff --git a/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199JavaCompiler.java b/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199JavaCompiler.java
index 1b63d30..a0cb925 100644
--- a/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199JavaCompiler.java
+++ b/compilers/jsr199/src/main/java/org/apache/commons/jci/compilers/Jsr199JavaCompiler.java
@@ -59,53 +59,63 @@
             name = pName;
         }
 
+        @Override
         public boolean delete() {
             log.debug("delete");
             return super.delete();
         }
 
+        @Override
         public CharSequence getCharContent(boolean encodingErrors) throws IOException {
             log.debug("getCharContent of " + name);
             byte[] content = reader.getBytes(name);
             return new String(content);
         }
 
+        @Override
         public long getLastModified() {
             log.debug("getLastModified");
             return super.getLastModified();
         }
 
+        @Override
         public String getName() {
             log.debug("getName " + super.getName());
             return super.getName();
         }
 
+        @Override
         public boolean isNameCompatible(String simpleName, Kind kind) {
             log.debug("isNameCompatible " + simpleName + " " + kind);
             // return super.isNameCompatible(simpleName, kind);
             return true;
         }
 
+        @Override
         public InputStream openInputStream() throws IOException {
             log.debug("openInputStream");
             return super.openInputStream();
         }
 
+        @Override
         public OutputStream openOutputStream() throws IOException {
             log.debug("openOutputStream");
             return super.openOutputStream();
         }
 
+        @Override
         public Reader openReader(boolean arg0) throws IOException {
             log.debug("openReader");
             return super.openReader(arg0);
         }
 
+        @Override
         public Writer openWriter() throws IOException {
             log.debug("openWriter");
             return super.openWriter();
         }
 
+        @Override
         public URI toUri() {
             // log.debug("toUri " + super.toUri());
             return super.toUri();
diff --git a/compilers/jsr199/src/test/java/org/apache/commons/jci/compilers/Jsr199JavaCompilerTestCase.java b/compilers/jsr199/src/test/java/org/apache/commons/jci/compilers/Jsr199JavaCompilerTestCase.java
index 5240ef0..1158452 100644
--- a/compilers/jsr199/src/test/java/org/apache/commons/jci/compilers/Jsr199JavaCompilerTestCase.java
+++ b/compilers/jsr199/src/test/java/org/apache/commons/jci/compilers/Jsr199JavaCompilerTestCase.java
@@ -20,10 +20,12 @@
 
 public final class Jsr199JavaCompilerTestCase extends AbstractCompilerTestCase {
 
+    @Override
     public String getCompilerName() {
         return "jsr199";
     }
 
+    @Override
     public JavaCompiler createJavaCompiler() {
         return new Jsr199JavaCompiler();
     }
