diff --git a/lib/java/src/org/apache/thrift/TDeserializer.java b/lib/java/src/org/apache/thrift/TDeserializer.java
index 16070bb..fc8cb83 100644
--- a/lib/java/src/org/apache/thrift/TDeserializer.java
+++ b/lib/java/src/org/apache/thrift/TDeserializer.java
@@ -43,7 +43,7 @@
   /**
    * Create a new TDeserializer that uses the TBinaryProtocol by default.
    *
-   * @throws TTransportException
+   * @throws TTransportException if there an error initializing the underlying transport.
    */
   public TDeserializer() throws TTransportException {
     this(new TBinaryProtocol.Factory());
@@ -54,7 +54,7 @@
    * factory that is passed in.
    *
    * @param protocolFactory Factory to create a protocol
-   * @throws TTransportException
+   * @throws TTransportException if there an error initializing the underlying transport.
    */
   public TDeserializer(TProtocolFactory protocolFactory) throws TTransportException {
     trans_ = new TMemoryInputTransport(new TConfiguration());
diff --git a/lib/java/src/org/apache/thrift/TSerializer.java b/lib/java/src/org/apache/thrift/TSerializer.java
index 8f85022..710cd21 100644
--- a/lib/java/src/org/apache/thrift/TSerializer.java
+++ b/lib/java/src/org/apache/thrift/TSerializer.java
@@ -52,7 +52,7 @@
   /**
    * Create a new TSerializer that uses the TBinaryProtocol by default.
    *
-   * @throws TTransportException
+   * @throws TTransportException if there an error initializing the underlying transport.
    */
   public TSerializer() throws TTransportException {
     this(new TBinaryProtocol.Factory());
@@ -63,7 +63,7 @@
    * factory that is passed in.
    *
    * @param protocolFactory Factory to create a protocol
-   * @throws TTransportException
+   * @throws TTransportException if there an error initializing the underlying transport.
    */
   public TSerializer(TProtocolFactory protocolFactory) throws TTransportException {
     transport_ = new TIOStreamTransport(new TConfiguration(), baos_);
diff --git a/lib/java/src/org/apache/thrift/TUnion.java b/lib/java/src/org/apache/thrift/TUnion.java
index cf22749..0ad6881 100644
--- a/lib/java/src/org/apache/thrift/TUnion.java
+++ b/lib/java/src/org/apache/thrift/TUnion.java
@@ -168,7 +168,7 @@
    * @param iprot input protocol from which to read a value.
    * @param field the field whose value is to be read from iprot.
    * @return read Object based on the field header, as specified by the argument.
-   * @throws TException
+   * @throws TException on error during read.
    */
   protected abstract Object standardSchemeReadValue(TProtocol iprot, TField field) throws TException;
   protected abstract void standardSchemeWriteValue(TProtocol oprot) throws TException;
diff --git a/lib/java/src/org/apache/thrift/transport/AutoExpandingBufferWriteTransport.java b/lib/java/src/org/apache/thrift/transport/AutoExpandingBufferWriteTransport.java
index 25f974a..84b28b4 100644
--- a/lib/java/src/org/apache/thrift/transport/AutoExpandingBufferWriteTransport.java
+++ b/lib/java/src/org/apache/thrift/transport/AutoExpandingBufferWriteTransport.java
@@ -31,6 +31,7 @@
 
   /**
    * Constructor.
+   * @param config the configuration to use. Currently used for defining the maximum message size.
    * @param initialCapacity the initial capacity of the buffer
    * @param frontReserve space, if any, to reserve at the beginning such
    *                     that the first write is after this reserve.
diff --git a/lib/java/src/org/apache/thrift/transport/TFileProcessor.java b/lib/java/src/org/apache/thrift/transport/TFileProcessor.java
index 96087d1..94de5b4 100644
--- a/lib/java/src/org/apache/thrift/transport/TFileProcessor.java
+++ b/lib/java/src/org/apache/thrift/transport/TFileProcessor.java
@@ -45,7 +45,7 @@
     outputTransport_ = outputTransport;
   }
 
-  public TFileProcessor(TProcessor processor, 
+  public TFileProcessor(TProcessor processor,
                         TProtocolFactory inputProtocolFactory,
                         TProtocolFactory outputProtocolFactory,
                         TFileTransport inputTransport,
@@ -67,7 +67,7 @@
         processor_.process(ip, op);
         int newChunk = inputTransport_.getCurChunk();
         curChunk = newChunk;
-      } 
+      }
     } catch (TTransportException e) {
       // if we are processing the last chunk - we could have just hit EOF
       // on EOF - trap the error and stop processing.
@@ -84,6 +84,7 @@
 
    * @param startChunkNum first chunk to be processed
    * @param endChunkNum last chunk to be processed
+   * @throws TException if endChunkNum < startChunkNum.
    */
   public void processChunk(int startChunkNum, int endChunkNum) throws TException {
     int numChunks = inputTransport_.getNumChunks();
@@ -104,6 +105,7 @@
    * Process a single chunk
    *
    * @param chunkNum chunk to be processed
+   * @throws TException on error while processing the given chunk.
    */
   public void processChunk(int chunkNum) throws TException {
     processChunk(chunkNum, chunkNum);
@@ -111,6 +113,8 @@
 
   /**
    * Process a current chunk
+   *
+   * @throws TException on error while processing the given chunk.
    */
   public void processChunk() throws TException {
     processChunk(inputTransport_.getCurChunk());
diff --git a/lib/java/src/org/apache/thrift/transport/TFileTransport.java b/lib/java/src/org/apache/thrift/transport/TFileTransport.java
index 85f9708..61b68d2 100644
--- a/lib/java/src/org/apache/thrift/transport/TFileTransport.java
+++ b/lib/java/src/org/apache/thrift/transport/TFileTransport.java
@@ -407,6 +407,7 @@
    *
    * @param path File path to read and write from
    * @param readOnly Whether this is a read-only transport
+   * @throws IOException if there is an error accessing the file.
    */
   public TFileTransport(final String path, boolean readOnly) throws IOException {
     inputFile_ = new TStandardFile(path);
diff --git a/lib/java/src/org/apache/thrift/transport/TMemoryBuffer.java b/lib/java/src/org/apache/thrift/transport/TMemoryBuffer.java
index c3a3eb4..d9a3cc9 100644
--- a/lib/java/src/org/apache/thrift/transport/TMemoryBuffer.java
+++ b/lib/java/src/org/apache/thrift/transport/TMemoryBuffer.java
@@ -34,6 +34,7 @@
    * being written to it.
    *
    * @param size the initial size of the buffer
+   * @throws TTransportException on error initializing the underlying transport.
    */
   public TMemoryBuffer(int size) throws TTransportException {
     super(new TConfiguration());
@@ -46,8 +47,9 @@
    * internal buffer will grow as necessary to accommodate the size of the data
    * being written to it.
    *
-   * @param config
+   * @param config the configuration to use.
    * @param size the initial size of the buffer
+   * @throws TTransportException on error initializing the underlying transport.
    */
   public TMemoryBuffer(TConfiguration config, int size) throws TTransportException {
     super(config);
@@ -121,4 +123,3 @@
     return arr_.get();
   }
 }
-
diff --git a/lib/java/src/org/apache/thrift/transport/TNonblockingServerTransport.java b/lib/java/src/org/apache/thrift/transport/TNonblockingServerTransport.java
index daac0d5..53d0842 100644
--- a/lib/java/src/org/apache/thrift/transport/TNonblockingServerTransport.java
+++ b/lib/java/src/org/apache/thrift/transport/TNonblockingServerTransport.java
@@ -32,7 +32,7 @@
   /**
    *
    * @return an incoming connection or null if there is none.
-   * @throws TTransportException
+   * @throws TTransportException on error during this operation.
    */
   @Override
   public abstract TNonblockingTransport accept() throws TTransportException;
diff --git a/lib/java/src/org/apache/thrift/transport/TTransport.java b/lib/java/src/org/apache/thrift/transport/TTransport.java
index ee07024..afe9cfb 100644
--- a/lib/java/src/org/apache/thrift/transport/TTransport.java
+++ b/lib/java/src/org/apache/thrift/transport/TTransport.java
@@ -198,7 +198,7 @@
 
   /**
    * Consume len bytes from the underlying buffer.
-   * @param len
+   * @param len the number of bytes to consume from the underlying buffer.
    */
   public void consumeBuffer(int len) {}
 
