diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/irc/IRCFilter.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/irc/IRCFilter.java
index ee9305128edcb8db3247b0b8cfc914d0dc0b20bc..58f00b9759a94d3b89c9250b903b0b7bb3be61ac 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/irc/IRCFilter.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/irc/IRCFilter.java
@@ -71,7 +71,7 @@ abstract class IRCFilter {
 
         // Allow numerical responses
         try {
-            new Integer(command);
+            Integer.valueOf(command);
             return s;
         } catch(NumberFormatException nfe){}
 
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS4aServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS4aServer.java
index 546e7129dec344840a4de136506bbe3cc20b9530..d56b4ceed4c1f8f623708190b1d358e51ac14ed1 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS4aServer.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS4aServer.java
@@ -104,19 +104,20 @@ public class SOCKS4aServer extends SOCKSServer {
             throw new SOCKSException("Invalid port number in request");
         }
 
-        connHostName = new String("");
+        StringBuilder builder = new StringBuilder();
         boolean alreadyWarned = false;
         for (int i = 0; i < 4; ++i) {
             int octet = in.readByte() & 0xff;
-            connHostName += Integer.toString(octet);
+            builder.append(Integer.toString(octet));
             if (i != 3) {
-                connHostName += ".";
+                builder.append(".");
                 if (octet != 0 && !alreadyWarned) {
                     _log.warn("IPV4 address type in request: " + connHostName + ". Is your client secure?");
                     alreadyWarned = true;
                 }
             }
         }
+        connHostName = builder.toString();
 
         // Check if the requested IP should be mapped to a domain name
         String mappedDomainName = getMappedDomainNameForIP(connHostName);
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS5Server.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS5Server.java
index f55a80aa7a0ed27ecc5bf48b6dc9834cd9c75384..edbaa88593f497d79e1d62d4355861506277ce51 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS5Server.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS5Server.java
@@ -198,14 +198,16 @@ public class SOCKS5Server extends SOCKSServer {
         addressType = in.readUnsignedByte();
         switch (addressType) {
         case AddressType.IPV4:
-            connHostName = new String("");
+            //connHostName = new String();
+            StringBuilder builder = new StringBuilder();
             for (int i = 0; i < 4; ++i) {
                 int octet = in.readUnsignedByte();
-                connHostName += Integer.toString(octet);
+                builder.append(Integer.toString(octet));
                 if (i != 3) {
-                    connHostName += ".";
+                    builder.append(".");
                 }
             }
+            connHostName = builder.toString();
             // Check if the requested IP should be mapped to a domain name
             String mappedDomainName = getMappedDomainNameForIP(connHostName);
             if (mappedDomainName != null) {
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/PcapWriter.java b/apps/streaming/java/src/net/i2p/client/streaming/PcapWriter.java
index 930ced57c84a92be43b6c03b15100fc42fa0954e..00448f45d9d13e52fcb35368179403d18a581932 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/PcapWriter.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/PcapWriter.java
@@ -238,10 +238,7 @@ public class PcapWriter {
             seq = pkt.getSequenceNum();
         long acked = 0;
         if (con != null) {
-            if (isInbound)
-                acked = getLowestAckedThrough(pkt, con);
-            else
-                acked = getLowestAckedThrough(pkt, con);
+            acked = getLowestAckedThrough(pkt, con);
         }
         DataHelper.writeLong(_fos, 4, pkt.getSequenceNum());
         DataHelper.writeLong(_fos, 4, acked);
diff --git a/core/java/src/net/i2p/util/Log.java b/core/java/src/net/i2p/util/Log.java
index 75c56e79ca1e774e1ce0c93bd65a8701fa9547d5..42f54b06aa0fe8cdeaae12b6a3c0df2330ac0962 100644
--- a/core/java/src/net/i2p/util/Log.java
+++ b/core/java/src/net/i2p/util/Log.java
@@ -209,14 +209,15 @@ public class Log {
             return;
         
         // catenate all toString()s
-        String descString = "close() loop in";
+        StringBuilder builder = new StringBuilder();
+        builder.append("close() loop in");
         for (Object o : desc) {
-            descString += " ";
-            descString += String.valueOf(o);
+            builder.append(" ");
+            builder.append(String.valueOf(o));
         }
         
         Exception e = new Exception("check stack trace");
-        log(level,descString,e);
+        log(level,builder.toString(),e);
     }
 
     public String getName() {
diff --git a/router/java/src/net/i2p/router/Blocklist.java b/router/java/src/net/i2p/router/Blocklist.java
index 3a28bd85a6441b6763fc1eba5ba20aac9bbf5fa1..7385d87384150b1fbfa56746379eaa46a93893f9 100644
--- a/router/java/src/net/i2p/router/Blocklist.java
+++ b/router/java/src/net/i2p/router/Blocklist.java
@@ -526,7 +526,8 @@ public class Blocklist {
             if (pib == null) continue;
             // O(n**2)
             for (int i = 0; i < rv.size(); i++) {
-                if (DataHelper.eq(rv.get(i), pib)) continue;
+                // findbugs triggered on this, looks like unfinished work
+                //if (DataHelper.eq(rv.get(i), pib)) continue;
             }
             rv.add(pib);
          }
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java
index 19ab5c89c3803e843c0748a7fd78ed211c998825..282c11eae690f7b022fda8ded8e979417b051de1 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java
@@ -146,7 +146,7 @@ class FloodfillMonitorJob extends JobImpl {
             final RouterContext rc = getContext();
             final String log = String.format(
                     "FF criteria breakdown: happy=%b, capabilities=%s, maxLag=%d, known=%d, " +
-                    "active=%d, participating=%d, offset=%d, ssuAddr=%b",
+                    "active=%d, participating=%d, offset=%d, ssuAddr=%s",
                     happy, 
                     rc.router().getRouterInfo().getCapabilities(),
                     rc.jobQueue().getMaxLag(),
@@ -154,7 +154,7 @@ class FloodfillMonitorJob extends JobImpl {
                     rc.commSystem().countActivePeers(),
                     rc.tunnelManager().getParticipatingCount(),
                     Math.abs(rc.clock().getOffset()),
-                    rc.router().getRouterInfo().getTargetAddress("SSU")
+                    rc.router().getRouterInfo().getTargetAddress("SSU").toString()
                     );
             _log.debug(log);
         }
diff --git a/router/java/src/net/i2p/router/transport/UPnP.java b/router/java/src/net/i2p/router/transport/UPnP.java
index 99b30d346d3b948a39dffce0d10189ad4640e603..32678f750d05aa2bc60f2b52189fc89252e742d5 100644
--- a/router/java/src/net/i2p/router/transport/UPnP.java
+++ b/router/java/src/net/i2p/router/transport/UPnP.java
@@ -415,7 +415,7 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
 		if(getIP == null || !getIP.postControlAction())
 			return -1;
 
-		return Integer.valueOf(getIP.getOutputArgumentList().getArgument("NewUpstreamMaxBitRate").getValue());
+		return Integer.parseInt(getIP.getOutputArgumentList().getArgument("NewUpstreamMaxBitRate").getValue());
 	}
 	
 	/**
@@ -429,7 +429,7 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
 		if(getIP == null || !getIP.postControlAction())
 			return -1;
 
-		return Integer.valueOf(getIP.getOutputArgumentList().getArgument("NewDownstreamMaxBitRate").getValue());
+		return Integer.parseInt(getIP.getOutputArgumentList().getArgument("NewDownstreamMaxBitRate").getValue());
 	}
 	
 	/** debug only */