diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0516848e..5a8d2cea 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,9 +10,22 @@
incompatibilities, allowing CodeMirror’s own find function to be re-enabled for reliable text search of content far
outside the viewport.
+#### Removals
+
+- **Removed Apache HttpClient 3**: If you have custom Heritrix modules you may need to update the following
+ class references in your code:
+
+ | Removed | Replacement |
+ |-----------------------------------------------------------|--------------------------------------|
+ | `org.apache.commons.httpclient.URIException` | `org.archive.url.URIException` |
+ | `org.apache.commons.httpclient.Header` | `org.archive.format.http.HttpHeader` |
+
+ Note that Apache HttpClient 4 (`org.apache.http`) was not removed.
+
#### Dependency Upgrades
- **codemirror**: 2.23 → 6.0.1
+- **webarchive-commons**: 1.3.0 → 2.0.1
## [3.9.0](https://github.com/internetarchive/heritrix3/releases/tag/3.9.0)
diff --git a/commons/pom.xml b/commons/pom.xml
index 85f72de6..dc698f2a 100644
--- a/commons/pom.xml
+++ b/commons/pom.xml
@@ -145,13 +145,7 @@
org.netpreserve.commons
webarchive-commons
- 1.3.0
-
-
- junit
- junit
-
-
+ 2.0.1
diff --git a/commons/src/main/java/org/archive/io/Arc2Warc.java b/commons/src/main/java/org/archive/io/Arc2Warc.java
index 0e1f3c5e..82238fb5 100644
--- a/commons/src/main/java/org/archive/io/Arc2Warc.java
+++ b/commons/src/main/java/org/archive/io/Arc2Warc.java
@@ -38,7 +38,7 @@ import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;
-import org.archive.io.arc.ARCConstants;
+import org.archive.format.arc.ARCConstants;
import org.archive.io.arc.ARCReader;
import org.archive.io.arc.ARCReaderFactory;
import org.archive.io.arc.ARCRecord;
diff --git a/commons/src/main/java/org/archive/io/Warc2Arc.java b/commons/src/main/java/org/archive/io/Warc2Arc.java
index 30c9ff20..7c8bb12a 100644
--- a/commons/src/main/java/org/archive/io/Warc2Arc.java
+++ b/commons/src/main/java/org/archive/io/Warc2Arc.java
@@ -37,7 +37,7 @@ import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;
import org.archive.io.arc.ARCWriter;
import org.archive.io.arc.WriterPoolSettingsData;
-import org.archive.io.warc.WARCConstants;
+import org.archive.format.warc.WARCConstants;
import org.archive.io.warc.WARCReader;
import org.archive.io.warc.WARCReaderFactory;
import org.archive.io.warc.WARCRecord;
diff --git a/commons/src/main/java/org/archive/net/UURI.java b/commons/src/main/java/org/archive/net/UURI.java
index 9444df23..1813de41 100644
--- a/commons/src/main/java/org/archive/net/UURI.java
+++ b/commons/src/main/java/org/archive/net/UURI.java
@@ -26,7 +26,7 @@ import com.esotericsoftware.kryo.DefaultSerializer;
import com.esotericsoftware.kryo.Serializer;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.url.UsableURI;
import com.esotericsoftware.kryo.Kryo;
diff --git a/commons/src/main/java/org/archive/net/UURIFactory.java b/commons/src/main/java/org/archive/net/UURIFactory.java
index b6db06fc..84cfe2f4 100644
--- a/commons/src/main/java/org/archive/net/UURIFactory.java
+++ b/commons/src/main/java/org/archive/net/UURIFactory.java
@@ -18,7 +18,7 @@
*/
package org.archive.net;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.url.UsableURI;
import org.archive.url.UsableURIFactory;
diff --git a/commons/src/main/java/org/archive/surt/SURTTokenizer.java b/commons/src/main/java/org/archive/surt/SURTTokenizer.java
index 08d8568c..4bc5ed74 100644
--- a/commons/src/main/java/org/archive/surt/SURTTokenizer.java
+++ b/commons/src/main/java/org/archive/surt/SURTTokenizer.java
@@ -18,7 +18,7 @@
*/
package org.archive.surt;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.net.UURI;
import org.archive.net.UURIFactory;
import org.archive.util.ArchiveUtils;
diff --git a/commons/src/main/java/org/archive/util/UriUtils.java b/commons/src/main/java/org/archive/util/UriUtils.java
index bcde5e50..68a8cdb0 100644
--- a/commons/src/main/java/org/archive/util/UriUtils.java
+++ b/commons/src/main/java/org/archive/util/UriUtils.java
@@ -32,9 +32,9 @@ import java.util.logging.Logger;
import java.util.regex.Matcher;
import org.apache.commons.codec.DecoderException;
-import org.apache.commons.httpclient.URIException;
import org.archive.net.UURI;
import org.archive.url.LaxURLCodec;
+import org.archive.url.URIException;
/**
diff --git a/commons/src/test/java/org/archive/surt/SURTTokenizerTest.java b/commons/src/test/java/org/archive/surt/SURTTokenizerTest.java
index 351be2ab..04473bba 100644
--- a/commons/src/test/java/org/archive/surt/SURTTokenizerTest.java
+++ b/commons/src/test/java/org/archive/surt/SURTTokenizerTest.java
@@ -18,7 +18,7 @@
*/
package org.archive.surt;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
diff --git a/contrib/src/main/java/org/archive/crawler/frontier/AMQPUrlReceiver.java b/contrib/src/main/java/org/archive/crawler/frontier/AMQPUrlReceiver.java
index 78b50b88..018b500a 100644
--- a/contrib/src/main/java/org/archive/crawler/frontier/AMQPUrlReceiver.java
+++ b/contrib/src/main/java/org/archive/crawler/frontier/AMQPUrlReceiver.java
@@ -32,7 +32,7 @@ import java.util.concurrent.locks.ReentrantLock;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.crawler.event.AMQPUrlReceivedEvent;
import org.archive.crawler.event.CrawlStateEvent;
import org.archive.crawler.postprocessor.CandidatesProcessor;
diff --git a/contrib/src/main/java/org/archive/modules/AMQPPublishProcessor.java b/contrib/src/main/java/org/archive/modules/AMQPPublishProcessor.java
index 96398c37..d80d110a 100644
--- a/contrib/src/main/java/org/archive/modules/AMQPPublishProcessor.java
+++ b/contrib/src/main/java/org/archive/modules/AMQPPublishProcessor.java
@@ -27,7 +27,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Set;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.crawler.event.AMQPUrlPublishedEvent;
import org.archive.crawler.frontier.AMQPUrlReceiver;
import org.archive.modules.fetcher.FetchHTTP;
diff --git a/contrib/src/main/java/org/archive/modules/extractor/ExtractorYoutubeDL.java b/contrib/src/main/java/org/archive/modules/extractor/ExtractorYoutubeDL.java
index 7187ee44..bbfcd6d8 100644
--- a/contrib/src/main/java/org/archive/modules/extractor/ExtractorYoutubeDL.java
+++ b/contrib/src/main/java/org/archive/modules/extractor/ExtractorYoutubeDL.java
@@ -46,7 +46,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.crawler.framework.CrawlController;
import org.archive.crawler.frontier.AMQPUrlReceiver;
import org.archive.crawler.reporting.CrawlerLoggerModule;
diff --git a/contrib/src/main/java/org/archive/modules/extractor/KnowledgableExtractorJS.java b/contrib/src/main/java/org/archive/modules/extractor/KnowledgableExtractorJS.java
index 78483a47..08db7d31 100644
--- a/contrib/src/main/java/org/archive/modules/extractor/KnowledgableExtractorJS.java
+++ b/contrib/src/main/java/org/archive/modules/extractor/KnowledgableExtractorJS.java
@@ -23,7 +23,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.exception.NestableRuntimeException;
import org.archive.modules.CrawlURI;
diff --git a/contrib/src/test/java/org/archive/modules/extractor/ExtractorPDFContentTest.java b/contrib/src/test/java/org/archive/modules/extractor/ExtractorPDFContentTest.java
index 608fe739..b24bbfdc 100644
--- a/contrib/src/test/java/org/archive/modules/extractor/ExtractorPDFContentTest.java
+++ b/contrib/src/test/java/org/archive/modules/extractor/ExtractorPDFContentTest.java
@@ -25,7 +25,7 @@ import java.io.UnsupportedEncodingException;
import java.util.HashSet;
import java.util.Set;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
import org.archive.net.UURI;
import org.archive.net.UURIFactory;
diff --git a/contrib/src/test/java/org/archive/modules/extractor/ExtractorYoutubeFormatStreamTest.java b/contrib/src/test/java/org/archive/modules/extractor/ExtractorYoutubeFormatStreamTest.java
index 892c2d26..6086c677 100644
--- a/contrib/src/test/java/org/archive/modules/extractor/ExtractorYoutubeFormatStreamTest.java
+++ b/contrib/src/test/java/org/archive/modules/extractor/ExtractorYoutubeFormatStreamTest.java
@@ -31,7 +31,7 @@ import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.io.IOUtils;
import org.archive.modules.CrawlURI;
import org.archive.net.UURI;
diff --git a/engine/src/main/java/org/archive/crawler/frontier/AbstractFrontier.java b/engine/src/main/java/org/archive/crawler/frontier/AbstractFrontier.java
index 3f0308df..42ccfa34 100644
--- a/engine/src/main/java/org/archive/crawler/frontier/AbstractFrontier.java
+++ b/engine/src/main/java/org/archive/crawler/frontier/AbstractFrontier.java
@@ -48,8 +48,7 @@ import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.URIException;
+import org.apache.http.HttpStatus;
import org.archive.crawler.datamodel.UriUniqFilter.CrawlUriReceiver;
import org.archive.crawler.event.CrawlStateEvent;
import org.archive.crawler.framework.CrawlController;
@@ -68,6 +67,7 @@ import org.archive.modules.seeds.SeedListener;
import org.archive.modules.seeds.SeedModule;
import org.archive.spring.HasKeyedProperties;
import org.archive.spring.KeyedProperties;
+import org.archive.url.URIException;
import org.archive.util.ArchiveUtils;
import org.archive.util.ReportUtils;
import org.archive.util.iterator.LineReadingIterator;
diff --git a/engine/src/main/java/org/archive/crawler/frontier/FrontierJournal.java b/engine/src/main/java/org/archive/crawler/frontier/FrontierJournal.java
index cd42886c..d08b2e5b 100644
--- a/engine/src/main/java/org/archive/crawler/frontier/FrontierJournal.java
+++ b/engine/src/main/java/org/archive/crawler/frontier/FrontierJournal.java
@@ -26,7 +26,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.crawler.framework.Frontier;
import org.archive.io.CrawlerJournal;
import org.archive.modules.CrawlURI;
diff --git a/engine/src/main/java/org/archive/crawler/frontier/HostnameQueueAssignmentPolicy.java b/engine/src/main/java/org/archive/crawler/frontier/HostnameQueueAssignmentPolicy.java
index a4edd35a..5765646a 100644
--- a/engine/src/main/java/org/archive/crawler/frontier/HostnameQueueAssignmentPolicy.java
+++ b/engine/src/main/java/org/archive/crawler/frontier/HostnameQueueAssignmentPolicy.java
@@ -19,7 +19,7 @@
package org.archive.crawler.frontier;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.lang.StringUtils;
import org.archive.net.UURI;
import org.archive.net.UURIFactory;
diff --git a/engine/src/main/java/org/archive/crawler/postprocessor/CandidatesProcessor.java b/engine/src/main/java/org/archive/crawler/postprocessor/CandidatesProcessor.java
index dddd26e3..6e2e7367 100644
--- a/engine/src/main/java/org/archive/crawler/postprocessor/CandidatesProcessor.java
+++ b/engine/src/main/java/org/archive/crawler/postprocessor/CandidatesProcessor.java
@@ -23,7 +23,7 @@ package org.archive.crawler.postprocessor;
import static org.archive.modules.fetcher.FetchStatusCodes.S_DEFERRED;
import static org.archive.modules.fetcher.FetchStatusCodes.S_PREREQUISITE_UNSCHEDULABLE_FAILURE;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.crawler.framework.Frontier;
import org.archive.crawler.reporting.CrawlerLoggerModule;
import org.archive.crawler.spring.SheetOverlaysManager;
diff --git a/engine/src/main/java/org/archive/crawler/postprocessor/DispositionProcessor.java b/engine/src/main/java/org/archive/crawler/postprocessor/DispositionProcessor.java
index d7605ff9..306ca7aa 100644
--- a/engine/src/main/java/org/archive/crawler/postprocessor/DispositionProcessor.java
+++ b/engine/src/main/java/org/archive/crawler/postprocessor/DispositionProcessor.java
@@ -30,7 +30,7 @@ import static org.archive.modules.fetcher.FetchStatusCodes.S_DEFERRED;
import java.util.Map;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlMetadata;
import org.archive.modules.CrawlURI;
import org.archive.modules.Processor;
diff --git a/engine/src/main/java/org/archive/crawler/prefetch/PreconditionEnforcer.java b/engine/src/main/java/org/archive/crawler/prefetch/PreconditionEnforcer.java
index a1f71e6f..c6f45e2e 100644
--- a/engine/src/main/java/org/archive/crawler/prefetch/PreconditionEnforcer.java
+++ b/engine/src/main/java/org/archive/crawler/prefetch/PreconditionEnforcer.java
@@ -27,7 +27,7 @@ import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.crawler.reporting.CrawlerLoggerModule;
import org.archive.modules.CrawlMetadata;
import org.archive.modules.CrawlURI;
diff --git a/engine/src/main/java/org/archive/crawler/reporting/CrawlerLoggerModule.java b/engine/src/main/java/org/archive/crawler/reporting/CrawlerLoggerModule.java
index 95c00e4a..2f7b6e68 100644
--- a/engine/src/main/java/org/archive/crawler/reporting/CrawlerLoggerModule.java
+++ b/engine/src/main/java/org/archive/crawler/reporting/CrawlerLoggerModule.java
@@ -30,7 +30,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.checkpointing.Checkpoint;
import org.archive.checkpointing.Checkpointable;
import org.archive.crawler.framework.Engine;
diff --git a/engine/src/test/java/org/archive/crawler/datamodel/CrawlURITest.java b/engine/src/test/java/org/archive/crawler/datamodel/CrawlURITest.java
index db074eb4..9dbf1f7d 100644
--- a/engine/src/test/java/org/archive/crawler/datamodel/CrawlURITest.java
+++ b/engine/src/test/java/org/archive/crawler/datamodel/CrawlURITest.java
@@ -26,7 +26,7 @@ import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.nio.file.Path;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
import org.archive.modules.SchedulingConstants;
import org.archive.modules.extractor.LinkContext.SimpleLinkContext;
diff --git a/engine/src/test/java/org/archive/crawler/frontier/BdbMultipleWorkQueuesTest.java b/engine/src/test/java/org/archive/crawler/frontier/BdbMultipleWorkQueuesTest.java
index 7f54677d..e4ed7241 100644
--- a/engine/src/test/java/org/archive/crawler/frontier/BdbMultipleWorkQueuesTest.java
+++ b/engine/src/test/java/org/archive/crawler/frontier/BdbMultipleWorkQueuesTest.java
@@ -20,7 +20,7 @@ package org.archive.crawler.frontier;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
import org.archive.modules.SchedulingConstants;
import org.archive.net.UURIFactory;
diff --git a/engine/src/test/java/org/archive/crawler/frontier/FrontierJournalTest.java b/engine/src/test/java/org/archive/crawler/frontier/FrontierJournalTest.java
index ca533a06..54dc3594 100644
--- a/engine/src/test/java/org/archive/crawler/frontier/FrontierJournalTest.java
+++ b/engine/src/test/java/org/archive/crawler/frontier/FrontierJournalTest.java
@@ -18,7 +18,7 @@
*/
package org.archive.crawler.frontier;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/engine/src/test/java/org/archive/crawler/prefetch/QuotaEnforcerTest.java b/engine/src/test/java/org/archive/crawler/prefetch/QuotaEnforcerTest.java
index 35030a6d..331bafc9 100644
--- a/engine/src/test/java/org/archive/crawler/prefetch/QuotaEnforcerTest.java
+++ b/engine/src/test/java/org/archive/crawler/prefetch/QuotaEnforcerTest.java
@@ -29,7 +29,7 @@ import java.util.concurrent.BlockingQueue;
import javax.management.openmbean.CompositeData;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.crawler.framework.CrawlerProcessorTestBase;
import org.archive.crawler.framework.Frontier;
import org.archive.crawler.framework.Frontier.FrontierGroup;
diff --git a/engine/src/test/java/org/archive/crawler/util/BdbUriUniqFilterTest.java b/engine/src/test/java/org/archive/crawler/util/BdbUriUniqFilterTest.java
index 4c52618c..c776d17a 100644
--- a/engine/src/test/java/org/archive/crawler/util/BdbUriUniqFilterTest.java
+++ b/engine/src/test/java/org/archive/crawler/util/BdbUriUniqFilterTest.java
@@ -26,7 +26,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.io.FileUtils;
import org.archive.crawler.datamodel.UriUniqFilter;
import org.archive.modules.CrawlURI;
diff --git a/engine/src/test/java/org/archive/crawler/util/BloomUriUniqFilterTest.java b/engine/src/test/java/org/archive/crawler/util/BloomUriUniqFilterTest.java
index 667d3103..9d8b16c9 100644
--- a/engine/src/test/java/org/archive/crawler/util/BloomUriUniqFilterTest.java
+++ b/engine/src/test/java/org/archive/crawler/util/BloomUriUniqFilterTest.java
@@ -23,7 +23,7 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.crawler.datamodel.UriUniqFilter;
import org.archive.modules.CrawlURI;
import org.archive.net.UURI;
diff --git a/engine/src/test/java/org/archive/crawler/util/FPUriUniqFilterTest.java b/engine/src/test/java/org/archive/crawler/util/FPUriUniqFilterTest.java
index 768fe6e0..c170c1f9 100644
--- a/engine/src/test/java/org/archive/crawler/util/FPUriUniqFilterTest.java
+++ b/engine/src/test/java/org/archive/crawler/util/FPUriUniqFilterTest.java
@@ -25,7 +25,7 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.crawler.datamodel.UriUniqFilter;
import org.archive.modules.CrawlURI;
import org.archive.net.UURI;
diff --git a/engine/src/test/java/org/archive/crawler/util/TopNSetTest.java b/engine/src/test/java/org/archive/crawler/util/TopNSetTest.java
index b9009755..daa81813 100644
--- a/engine/src/test/java/org/archive/crawler/util/TopNSetTest.java
+++ b/engine/src/test/java/org/archive/crawler/util/TopNSetTest.java
@@ -19,7 +19,7 @@
package org.archive.crawler.util;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/engine/src/test/java/org/archive/modules/fetcher/FormAuthTest.java b/engine/src/test/java/org/archive/modules/fetcher/FormAuthTest.java
index 1cbeb9b4..abae4f01 100644
--- a/engine/src/test/java/org/archive/modules/fetcher/FormAuthTest.java
+++ b/engine/src/test/java/org/archive/modules/fetcher/FormAuthTest.java
@@ -33,7 +33,7 @@ import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.io.IOUtils;
import org.archive.crawler.prefetch.PreconditionEnforcer;
import org.archive.modules.CrawlMetadata;
diff --git a/modules/src/main/java/org/archive/modules/CrawlURI.java b/modules/src/main/java/org/archive/modules/CrawlURI.java
index 384c7da8..29f8ab35 100644
--- a/modules/src/main/java/org/archive/modules/CrawlURI.java
+++ b/modules/src/main/java/org/archive/modules/CrawlURI.java
@@ -19,7 +19,7 @@
package org.archive.modules;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.lang.StringUtils;
import org.archive.bdb.AutoKryo;
import org.archive.modules.credential.Credential;
@@ -1708,8 +1708,8 @@ implements Reporter, Serializable, OverlayContext, Comparable {
kryo.autoregister(java.util.HashMap[].class);
kryo.autoregister(org.archive.modules.credential.HttpAuthenticationCredential.class);
kryo.autoregister(org.archive.modules.credential.HtmlFormCredential.class);
- kryo.autoregister(org.apache.commons.httpclient.NameValuePair.class);
- kryo.autoregister(org.apache.commons.httpclient.NameValuePair[].class);
+ kryo.autoregister(org.apache.http.NameValuePair.class);
+ kryo.autoregister(org.apache.http.NameValuePair[].class);
kryo.autoregister(FetchType.class);
}
diff --git a/modules/src/main/java/org/archive/modules/Processor.java b/modules/src/main/java/org/archive/modules/Processor.java
index 9d096a0a..8e6405cc 100644
--- a/modules/src/main/java/org/archive/modules/Processor.java
+++ b/modules/src/main/java/org/archive/modules/Processor.java
@@ -23,7 +23,7 @@ import java.io.IOException;
import java.util.Set;
import java.util.concurrent.atomic.AtomicLong;
-import org.apache.commons.httpclient.HttpStatus;
+import org.apache.http.HttpStatus;
import org.archive.checkpointing.Checkpoint;
import org.archive.checkpointing.Checkpointable;
import org.archive.modules.credential.Credential;
@@ -31,6 +31,7 @@ import org.archive.modules.credential.HttpAuthenticationCredential;
import org.archive.modules.deciderules.AcceptDecideRule;
import org.archive.modules.deciderules.DecideResult;
import org.archive.modules.deciderules.DecideRule;
+import org.archive.modules.fetcher.FetchStatusCodes;
import org.archive.net.UURI;
import org.archive.spring.HasKeyedProperties;
import org.archive.spring.KeyedProperties;
diff --git a/modules/src/main/java/org/archive/modules/credential/HtmlFormCredential.java b/modules/src/main/java/org/archive/modules/credential/HtmlFormCredential.java
index b3ad436e..58a03143 100644
--- a/modules/src/main/java/org/archive/modules/credential/HtmlFormCredential.java
+++ b/modules/src/main/java/org/archive/modules/credential/HtmlFormCredential.java
@@ -23,7 +23,7 @@ import java.util.Map;
import java.util.TreeMap;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
import org.archive.net.UURI;
import org.archive.net.UURIFactory;
diff --git a/modules/src/main/java/org/archive/modules/deciderules/AddRedirectFromRootServerToScope.java b/modules/src/main/java/org/archive/modules/deciderules/AddRedirectFromRootServerToScope.java
index 1f17523a..bca1eaa9 100644
--- a/modules/src/main/java/org/archive/modules/deciderules/AddRedirectFromRootServerToScope.java
+++ b/modules/src/main/java/org/archive/modules/deciderules/AddRedirectFromRootServerToScope.java
@@ -19,7 +19,7 @@
package org.archive.modules.deciderules;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
import org.archive.net.UURI;
diff --git a/modules/src/main/java/org/archive/modules/deciderules/ExternalGeoLocationDecideRule.java b/modules/src/main/java/org/archive/modules/deciderules/ExternalGeoLocationDecideRule.java
index be454e05..8721105e 100644
--- a/modules/src/main/java/org/archive/modules/deciderules/ExternalGeoLocationDecideRule.java
+++ b/modules/src/main/java/org/archive/modules/deciderules/ExternalGeoLocationDecideRule.java
@@ -26,7 +26,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
import org.archive.modules.net.CrawlHost;
import org.archive.modules.net.ServerCache;
diff --git a/modules/src/main/java/org/archive/modules/deciderules/ResourceNoLongerThanDecideRule.java b/modules/src/main/java/org/archive/modules/deciderules/ResourceNoLongerThanDecideRule.java
index e87a0711..0f3b2878 100644
--- a/modules/src/main/java/org/archive/modules/deciderules/ResourceNoLongerThanDecideRule.java
+++ b/modules/src/main/java/org/archive/modules/deciderules/ResourceNoLongerThanDecideRule.java
@@ -18,10 +18,8 @@
*/
package org.archive.modules.deciderules;
-import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.HttpMethod;
import org.archive.modules.CrawlURI;
/**
diff --git a/modules/src/main/java/org/archive/modules/extractor/Extractor.java b/modules/src/main/java/org/archive/modules/extractor/Extractor.java
index 8af9e0c1..c36d261b 100644
--- a/modules/src/main/java/org/archive/modules/extractor/Extractor.java
+++ b/modules/src/main/java/org/archive/modules/extractor/Extractor.java
@@ -24,7 +24,7 @@ import java.util.concurrent.atomic.AtomicLong;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
import org.archive.modules.Processor;
import org.archive.net.UURI;
diff --git a/modules/src/main/java/org/archive/modules/extractor/ExtractorCSS.java b/modules/src/main/java/org/archive/modules/extractor/ExtractorCSS.java
index c0bec497..3cdb7f5d 100644
--- a/modules/src/main/java/org/archive/modules/extractor/ExtractorCSS.java
+++ b/modules/src/main/java/org/archive/modules/extractor/ExtractorCSS.java
@@ -23,7 +23,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.io.ReplayCharSequence;
import org.archive.modules.CrawlURI;
import org.archive.net.UURI;
diff --git a/modules/src/main/java/org/archive/modules/extractor/ExtractorDOC.java b/modules/src/main/java/org/archive/modules/extractor/ExtractorDOC.java
index 5993fcea..8be14a77 100644
--- a/modules/src/main/java/org/archive/modules/extractor/ExtractorDOC.java
+++ b/modules/src/main/java/org/archive/modules/extractor/ExtractorDOC.java
@@ -24,7 +24,7 @@ import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.io.IOUtils;
import org.archive.io.ReplayInputStream;
import org.archive.io.SeekReader;
diff --git a/modules/src/main/java/org/archive/modules/extractor/ExtractorHTML.java b/modules/src/main/java/org/archive/modules/extractor/ExtractorHTML.java
index 41fbe2c8..2be77f06 100644
--- a/modules/src/main/java/org/archive/modules/extractor/ExtractorHTML.java
+++ b/modules/src/main/java/org/archive/modules/extractor/ExtractorHTML.java
@@ -35,7 +35,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.google.common.base.Ascii;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.io.IOUtils;
import org.archive.io.ReplayCharSequence;
import org.archive.modules.CoreAttributeConstants;
diff --git a/modules/src/main/java/org/archive/modules/extractor/ExtractorHTTP.java b/modules/src/main/java/org/archive/modules/extractor/ExtractorHTTP.java
index fd398841..b5d93588 100644
--- a/modules/src/main/java/org/archive/modules/extractor/ExtractorHTTP.java
+++ b/modules/src/main/java/org/archive/modules/extractor/ExtractorHTTP.java
@@ -22,7 +22,7 @@ package org.archive.modules.extractor;
import java.util.ArrayList;
import java.util.List;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
import org.archive.modules.CrawlURI.FetchType;
import org.archive.net.UURI;
diff --git a/modules/src/main/java/org/archive/modules/extractor/ExtractorImpliedURI.java b/modules/src/main/java/org/archive/modules/extractor/ExtractorImpliedURI.java
index 35ba15a0..d18c9298 100644
--- a/modules/src/main/java/org/archive/modules/extractor/ExtractorImpliedURI.java
+++ b/modules/src/main/java/org/archive/modules/extractor/ExtractorImpliedURI.java
@@ -25,7 +25,7 @@ import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
import org.archive.net.UURI;
import org.archive.net.UURIFactory;
diff --git a/modules/src/main/java/org/archive/modules/extractor/ExtractorJS.java b/modules/src/main/java/org/archive/modules/extractor/ExtractorJS.java
index c361b7da..270041a3 100644
--- a/modules/src/main/java/org/archive/modules/extractor/ExtractorJS.java
+++ b/modules/src/main/java/org/archive/modules/extractor/ExtractorJS.java
@@ -26,7 +26,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.exception.NestableRuntimeException;
import org.archive.io.ReplayCharSequence;
diff --git a/modules/src/main/java/org/archive/modules/extractor/ExtractorMultipleRegex.java b/modules/src/main/java/org/archive/modules/extractor/ExtractorMultipleRegex.java
index 536ff7b2..784112c7 100644
--- a/modules/src/main/java/org/archive/modules/extractor/ExtractorMultipleRegex.java
+++ b/modules/src/main/java/org/archive/modules/extractor/ExtractorMultipleRegex.java
@@ -31,7 +31,7 @@ import java.util.logging.Logger;
import java.util.regex.MatchResult;
import java.util.regex.Matcher;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.io.ReplayCharSequence;
import org.archive.modules.CrawlURI;
import org.archive.modules.fetcher.FetchStatusCodes;
diff --git a/modules/src/main/java/org/archive/modules/extractor/ExtractorPDF.java b/modules/src/main/java/org/archive/modules/extractor/ExtractorPDF.java
index 683ee43f..ae7476db 100644
--- a/modules/src/main/java/org/archive/modules/extractor/ExtractorPDF.java
+++ b/modules/src/main/java/org/archive/modules/extractor/ExtractorPDF.java
@@ -23,7 +23,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.io.SinkHandlerLogThread;
import org.archive.modules.CrawlURI;
import org.archive.net.UURI;
diff --git a/modules/src/main/java/org/archive/modules/extractor/ExtractorRobotsTxt.java b/modules/src/main/java/org/archive/modules/extractor/ExtractorRobotsTxt.java
index 0ad93ca8..6b0f3d12 100644
--- a/modules/src/main/java/org/archive/modules/extractor/ExtractorRobotsTxt.java
+++ b/modules/src/main/java/org/archive/modules/extractor/ExtractorRobotsTxt.java
@@ -10,7 +10,7 @@ import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
public class ExtractorRobotsTxt extends ContentExtractor {
diff --git a/modules/src/main/java/org/archive/modules/extractor/ExtractorSitemap.java b/modules/src/main/java/org/archive/modules/extractor/ExtractorSitemap.java
index 90bf10ea..819d9665 100644
--- a/modules/src/main/java/org/archive/modules/extractor/ExtractorSitemap.java
+++ b/modules/src/main/java/org/archive/modules/extractor/ExtractorSitemap.java
@@ -7,7 +7,7 @@ import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.io.IOUtils;
import org.archive.modules.CrawlURI;
import org.archive.modules.extractor.ContentExtractor;
diff --git a/modules/src/main/java/org/archive/modules/extractor/ExtractorURI.java b/modules/src/main/java/org/archive/modules/extractor/ExtractorURI.java
index c51e02ae..8c787b77 100644
--- a/modules/src/main/java/org/archive/modules/extractor/ExtractorURI.java
+++ b/modules/src/main/java/org/archive/modules/extractor/ExtractorURI.java
@@ -25,7 +25,7 @@ import java.util.logging.Logger;
import java.util.regex.Matcher;
import org.apache.commons.codec.DecoderException;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
import org.archive.url.LaxURLCodec;
import org.archive.net.UURI;
diff --git a/modules/src/main/java/org/archive/modules/extractor/ExtractorXML.java b/modules/src/main/java/org/archive/modules/extractor/ExtractorXML.java
index 4501e0ba..1736d396 100644
--- a/modules/src/main/java/org/archive/modules/extractor/ExtractorXML.java
+++ b/modules/src/main/java/org/archive/modules/extractor/ExtractorXML.java
@@ -25,7 +25,7 @@ import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.lang.StringEscapeUtils;
import org.archive.io.ReplayCharSequence;
import org.archive.modules.CrawlURI;
diff --git a/modules/src/main/java/org/archive/modules/extractor/JerichoExtractorHTML.java b/modules/src/main/java/org/archive/modules/extractor/JerichoExtractorHTML.java
index a24ef516..bd63774c 100644
--- a/modules/src/main/java/org/archive/modules/extractor/JerichoExtractorHTML.java
+++ b/modules/src/main/java/org/archive/modules/extractor/JerichoExtractorHTML.java
@@ -33,7 +33,7 @@ import java.util.concurrent.atomic.AtomicLong;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import org.archive.modules.CoreAttributeConstants;
diff --git a/modules/src/main/java/org/archive/modules/extractor/UriErrorLoggerModule.java b/modules/src/main/java/org/archive/modules/extractor/UriErrorLoggerModule.java
index 855dce09..da344821 100644
--- a/modules/src/main/java/org/archive/modules/extractor/UriErrorLoggerModule.java
+++ b/modules/src/main/java/org/archive/modules/extractor/UriErrorLoggerModule.java
@@ -19,7 +19,7 @@
package org.archive.modules.extractor;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.net.UURI;
/**
diff --git a/modules/src/main/java/org/archive/modules/fetcher/AbstractCookieStore.java b/modules/src/main/java/org/archive/modules/fetcher/AbstractCookieStore.java
index 9096889b..dd89d31f 100644
--- a/modules/src/main/java/org/archive/modules/fetcher/AbstractCookieStore.java
+++ b/modules/src/main/java/org/archive/modules/fetcher/AbstractCookieStore.java
@@ -34,7 +34,7 @@ import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.io.IOUtils;
import org.apache.http.client.CookieStore;
import org.apache.http.cookie.Cookie;
diff --git a/modules/src/main/java/org/archive/modules/fetcher/FetchDNS.java b/modules/src/main/java/org/archive/modules/fetcher/FetchDNS.java
index cf746fdd..e625b420 100644
--- a/modules/src/main/java/org/archive/modules/fetcher/FetchDNS.java
+++ b/modules/src/main/java/org/archive/modules/fetcher/FetchDNS.java
@@ -34,7 +34,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.lang.StringUtils;
import org.archive.modules.CrawlURI;
import org.archive.modules.Processor;
diff --git a/modules/src/main/java/org/archive/modules/fetcher/FetchFTP.java b/modules/src/main/java/org/archive/modules/fetcher/FetchFTP.java
index 81c0f1ee..29b70773 100644
--- a/modules/src/main/java/org/archive/modules/fetcher/FetchFTP.java
+++ b/modules/src/main/java/org/archive/modules/fetcher/FetchFTP.java
@@ -36,7 +36,7 @@ import java.util.regex.Pattern;
import javax.net.SocketFactory;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPCommand;
import org.archive.io.RecordingInputStream;
diff --git a/modules/src/main/java/org/archive/modules/fetcher/FetchHTTP.java b/modules/src/main/java/org/archive/modules/fetcher/FetchHTTP.java
index 37891139..845da59e 100644
--- a/modules/src/main/java/org/archive/modules/fetcher/FetchHTTP.java
+++ b/modules/src/main/java/org/archive/modules/fetcher/FetchHTTP.java
@@ -44,7 +44,7 @@ import java.util.logging.Logger;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.lang.StringUtils;
import org.apache.http.Header;
import org.apache.http.HttpHeaders;
diff --git a/modules/src/main/java/org/archive/modules/fetcher/FetchHTTP2.java b/modules/src/main/java/org/archive/modules/fetcher/FetchHTTP2.java
index c94d08b5..c1b96d7b 100644
--- a/modules/src/main/java/org/archive/modules/fetcher/FetchHTTP2.java
+++ b/modules/src/main/java/org/archive/modules/fetcher/FetchHTTP2.java
@@ -18,7 +18,7 @@
*/
package org.archive.modules.fetcher;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.output.NullOutputStream;
import org.apache.http.client.CookieStore;
diff --git a/modules/src/main/java/org/archive/modules/fetcher/FetchHTTPCookieStore.java b/modules/src/main/java/org/archive/modules/fetcher/FetchHTTPCookieStore.java
index a5c8f7ce..32a4a145 100644
--- a/modules/src/main/java/org/archive/modules/fetcher/FetchHTTPCookieStore.java
+++ b/modules/src/main/java/org/archive/modules/fetcher/FetchHTTPCookieStore.java
@@ -18,7 +18,7 @@
*/
package org.archive.modules.fetcher;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.http.client.CookieStore;
import org.archive.modules.CrawlURI;
diff --git a/modules/src/main/java/org/archive/modules/fetcher/FetchHTTPRequest.java b/modules/src/main/java/org/archive/modules/fetcher/FetchHTTPRequest.java
index 53abf90d..18fa667e 100644
--- a/modules/src/main/java/org/archive/modules/fetcher/FetchHTTPRequest.java
+++ b/modules/src/main/java/org/archive/modules/fetcher/FetchHTTPRequest.java
@@ -46,7 +46,7 @@ import java.util.logging.Logger;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpEntityEnclosingRequest;
diff --git a/modules/src/main/java/org/archive/modules/fetcher/FetchSFTP.java b/modules/src/main/java/org/archive/modules/fetcher/FetchSFTP.java
index a46ce0ed..6ac2c297 100644
--- a/modules/src/main/java/org/archive/modules/fetcher/FetchSFTP.java
+++ b/modules/src/main/java/org/archive/modules/fetcher/FetchSFTP.java
@@ -16,7 +16,7 @@ import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.io.RecordingInputStream;
import org.archive.io.ReplayCharSequence;
import org.archive.modules.CrawlURI;
diff --git a/modules/src/main/java/org/archive/modules/fetcher/FetchWhois.java b/modules/src/main/java/org/archive/modules/fetcher/FetchWhois.java
index 63d55ff9..a9cba40d 100644
--- a/modules/src/main/java/org/archive/modules/fetcher/FetchWhois.java
+++ b/modules/src/main/java/org/archive/modules/fetcher/FetchWhois.java
@@ -30,7 +30,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.net.whois.WhoisClient;
import org.archive.bdb.BdbModule;
import org.archive.modules.CoreAttributeConstants;
diff --git a/modules/src/main/java/org/archive/modules/forms/FormLoginProcessor.java b/modules/src/main/java/org/archive/modules/forms/FormLoginProcessor.java
index 4c29c50b..1560c458 100644
--- a/modules/src/main/java/org/archive/modules/forms/FormLoginProcessor.java
+++ b/modules/src/main/java/org/archive/modules/forms/FormLoginProcessor.java
@@ -26,7 +26,7 @@ import java.util.concurrent.atomic.AtomicLong;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.lang.StringUtils;
import org.archive.checkpointing.Checkpointable;
import org.archive.modules.CoreAttributeConstants;
diff --git a/modules/src/main/java/org/archive/modules/net/CrawlServer.java b/modules/src/main/java/org/archive/modules/net/CrawlServer.java
index 344f9ebd..34b3d641 100644
--- a/modules/src/main/java/org/archive/modules/net/CrawlServer.java
+++ b/modules/src/main/java/org/archive/modules/net/CrawlServer.java
@@ -32,7 +32,7 @@ import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.io.IOUtils;
import org.archive.bdb.AutoKryo;
import org.archive.modules.CrawlURI;
diff --git a/modules/src/main/java/org/archive/modules/net/RobotsPolicy.java b/modules/src/main/java/org/archive/modules/net/RobotsPolicy.java
index 0ee4faaa..8781f624 100644
--- a/modules/src/main/java/org/archive/modules/net/RobotsPolicy.java
+++ b/modules/src/main/java/org/archive/modules/net/RobotsPolicy.java
@@ -21,7 +21,7 @@ package org.archive.modules.net;
import java.util.HashMap;
import java.util.Map;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
/**
diff --git a/modules/src/main/java/org/archive/modules/net/ServerCache.java b/modules/src/main/java/org/archive/modules/net/ServerCache.java
index c8b89a59..1e249115 100644
--- a/modules/src/main/java/org/archive/modules/net/ServerCache.java
+++ b/modules/src/main/java/org/archive/modules/net/ServerCache.java
@@ -24,7 +24,7 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.collections.Closure;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.net.UURI;
/**
diff --git a/modules/src/main/java/org/archive/modules/seeds/TextSeedModule.java b/modules/src/main/java/org/archive/modules/seeds/TextSeedModule.java
index be59ecf8..c4f22deb 100644
--- a/modules/src/main/java/org/archive/modules/seeds/TextSeedModule.java
+++ b/modules/src/main/java/org/archive/modules/seeds/TextSeedModule.java
@@ -29,7 +29,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.io.IOUtils;
import org.archive.io.ReadSource;
import org.archive.modules.CrawlURI;
diff --git a/modules/src/main/java/org/archive/modules/writer/ARCWriterProcessor.java b/modules/src/main/java/org/archive/modules/writer/ARCWriterProcessor.java
index e6944937..f3992d02 100644
--- a/modules/src/main/java/org/archive/modules/writer/ARCWriterProcessor.java
+++ b/modules/src/main/java/org/archive/modules/writer/ARCWriterProcessor.java
@@ -36,7 +36,7 @@ import java.util.logging.Logger;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
-import org.archive.io.ArchiveFileConstants;
+import org.archive.format.ArchiveFileConstants;
import org.archive.io.ReplayInputStream;
import org.archive.io.WriterPoolMember;
import org.archive.io.arc.ARCWriter;
diff --git a/modules/src/main/java/org/archive/state/ModuleTestBase.java b/modules/src/main/java/org/archive/state/ModuleTestBase.java
index d9d912f2..16335aaa 100644
--- a/modules/src/main/java/org/archive/state/ModuleTestBase.java
+++ b/modules/src/main/java/org/archive/state/ModuleTestBase.java
@@ -24,7 +24,7 @@ import java.io.IOException;
import java.io.Serializable;
import java.nio.file.Path;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.lang.SerializationUtils;
import org.archive.modules.CrawlURI;
import org.archive.net.UURI;
diff --git a/modules/src/test/java/org/archive/modules/canonicalize/FixupQueryStringTest.java b/modules/src/test/java/org/archive/modules/canonicalize/FixupQueryStringTest.java
index 4a54fbc0..9aa05e24 100644
--- a/modules/src/test/java/org/archive/modules/canonicalize/FixupQueryStringTest.java
+++ b/modules/src/test/java/org/archive/modules/canonicalize/FixupQueryStringTest.java
@@ -18,7 +18,7 @@
*/
package org.archive.modules.canonicalize;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.state.ModuleTestBase;
import org.junit.jupiter.api.Test;
diff --git a/modules/src/test/java/org/archive/modules/canonicalize/RegexRuleTest.java b/modules/src/test/java/org/archive/modules/canonicalize/RegexRuleTest.java
index 2f3e7e03..a9d67260 100644
--- a/modules/src/test/java/org/archive/modules/canonicalize/RegexRuleTest.java
+++ b/modules/src/test/java/org/archive/modules/canonicalize/RegexRuleTest.java
@@ -22,7 +22,7 @@ import java.util.regex.Pattern;
import javax.management.InvalidAttributeValueException;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.state.ModuleTestBase;
import org.junit.jupiter.api.Test;
diff --git a/modules/src/test/java/org/archive/modules/canonicalize/RulesCanonicalizationPolicyTest.java b/modules/src/test/java/org/archive/modules/canonicalize/RulesCanonicalizationPolicyTest.java
index dc1a6cde..bcc31c5a 100644
--- a/modules/src/test/java/org/archive/modules/canonicalize/RulesCanonicalizationPolicyTest.java
+++ b/modules/src/test/java/org/archive/modules/canonicalize/RulesCanonicalizationPolicyTest.java
@@ -19,7 +19,7 @@
package org.archive.modules.canonicalize;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/modules/src/test/java/org/archive/modules/canonicalize/StripSessionCFIDsTest.java b/modules/src/test/java/org/archive/modules/canonicalize/StripSessionCFIDsTest.java
index d0e1c035..aeadbdea 100644
--- a/modules/src/test/java/org/archive/modules/canonicalize/StripSessionCFIDsTest.java
+++ b/modules/src/test/java/org/archive/modules/canonicalize/StripSessionCFIDsTest.java
@@ -1,6 +1,6 @@
package org.archive.modules.canonicalize;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.canonicalize.StripSessionCFIDs;
import org.archive.state.ModuleTestBase;
import org.junit.jupiter.api.Test;
diff --git a/modules/src/test/java/org/archive/modules/canonicalize/StripSessionIDsTest.java b/modules/src/test/java/org/archive/modules/canonicalize/StripSessionIDsTest.java
index 123fccb7..81cdc9f3 100644
--- a/modules/src/test/java/org/archive/modules/canonicalize/StripSessionIDsTest.java
+++ b/modules/src/test/java/org/archive/modules/canonicalize/StripSessionIDsTest.java
@@ -18,7 +18,7 @@
*/
package org.archive.modules.canonicalize;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.state.ModuleTestBase;
import org.junit.jupiter.api.Test;
diff --git a/modules/src/test/java/org/archive/modules/canonicalize/StripUserinfoRuleTest.java b/modules/src/test/java/org/archive/modules/canonicalize/StripUserinfoRuleTest.java
index 90c37a2e..4bc3c5ee 100644
--- a/modules/src/test/java/org/archive/modules/canonicalize/StripUserinfoRuleTest.java
+++ b/modules/src/test/java/org/archive/modules/canonicalize/StripUserinfoRuleTest.java
@@ -18,7 +18,7 @@
*/
package org.archive.modules.canonicalize;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.state.ModuleTestBase;
import org.junit.jupiter.api.Test;
diff --git a/modules/src/test/java/org/archive/modules/canonicalize/StripWWWNRuleTest.java b/modules/src/test/java/org/archive/modules/canonicalize/StripWWWNRuleTest.java
index 58880844..3f03abd2 100644
--- a/modules/src/test/java/org/archive/modules/canonicalize/StripWWWNRuleTest.java
+++ b/modules/src/test/java/org/archive/modules/canonicalize/StripWWWNRuleTest.java
@@ -18,7 +18,7 @@
*/
package org.archive.modules.canonicalize;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.state.ModuleTestBase;
import org.junit.jupiter.api.Test;
diff --git a/modules/src/test/java/org/archive/modules/canonicalize/StripWWWRuleTest.java b/modules/src/test/java/org/archive/modules/canonicalize/StripWWWRuleTest.java
index 46b4b96d..fe6ff102 100644
--- a/modules/src/test/java/org/archive/modules/canonicalize/StripWWWRuleTest.java
+++ b/modules/src/test/java/org/archive/modules/canonicalize/StripWWWRuleTest.java
@@ -18,7 +18,7 @@
*/
package org.archive.modules.canonicalize;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.state.ModuleTestBase;
import org.junit.jupiter.api.Test;
diff --git a/modules/src/test/java/org/archive/modules/deciderules/MatchesListRegexDecideRuleTest.java b/modules/src/test/java/org/archive/modules/deciderules/MatchesListRegexDecideRuleTest.java
index 41344f29..004a2c2a 100644
--- a/modules/src/test/java/org/archive/modules/deciderules/MatchesListRegexDecideRuleTest.java
+++ b/modules/src/test/java/org/archive/modules/deciderules/MatchesListRegexDecideRuleTest.java
@@ -1,6 +1,6 @@
package org.archive.modules.deciderules;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
import org.archive.net.UURIFactory;
import org.junit.jupiter.api.Test;
diff --git a/modules/src/test/java/org/archive/modules/deciderules/MatchesStatusCodeDecideRuleTest.java b/modules/src/test/java/org/archive/modules/deciderules/MatchesStatusCodeDecideRuleTest.java
index 93f9294f..bef37885 100644
--- a/modules/src/test/java/org/archive/modules/deciderules/MatchesStatusCodeDecideRuleTest.java
+++ b/modules/src/test/java/org/archive/modules/deciderules/MatchesStatusCodeDecideRuleTest.java
@@ -1,6 +1,6 @@
package org.archive.modules.deciderules;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
import org.archive.modules.extractor.LinkContext;
import org.archive.net.UURI;
diff --git a/modules/src/test/java/org/archive/modules/deciderules/NotMatchesStatusCodeDecideRuleTest.java b/modules/src/test/java/org/archive/modules/deciderules/NotMatchesStatusCodeDecideRuleTest.java
index 9311d9ea..a4d16e36 100644
--- a/modules/src/test/java/org/archive/modules/deciderules/NotMatchesStatusCodeDecideRuleTest.java
+++ b/modules/src/test/java/org/archive/modules/deciderules/NotMatchesStatusCodeDecideRuleTest.java
@@ -1,7 +1,6 @@
package org.archive.modules.deciderules;
-import org.apache.commons.httpclient.URIException;
-import org.apache.commons.httpclient.methods.GetMethod;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
import org.archive.modules.extractor.LinkContext;
import org.archive.net.UURI;
diff --git a/modules/src/test/java/org/archive/modules/deciderules/ViaSurtPrefixedDecideRuleTest.java b/modules/src/test/java/org/archive/modules/deciderules/ViaSurtPrefixedDecideRuleTest.java
index 3e84ffc2..5e4276f7 100644
--- a/modules/src/test/java/org/archive/modules/deciderules/ViaSurtPrefixedDecideRuleTest.java
+++ b/modules/src/test/java/org/archive/modules/deciderules/ViaSurtPrefixedDecideRuleTest.java
@@ -4,7 +4,7 @@ package org.archive.modules.deciderules;
import java.util.ArrayList;
import java.util.List;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlURI;
import org.archive.modules.extractor.LinkContext;
import org.archive.net.UURI;
diff --git a/modules/src/test/java/org/archive/modules/extractor/ExtractorHTMLTest.java b/modules/src/test/java/org/archive/modules/extractor/ExtractorHTMLTest.java
index 1c80987e..1d5405bf 100644
--- a/modules/src/test/java/org/archive/modules/extractor/ExtractorHTMLTest.java
+++ b/modules/src/test/java/org/archive/modules/extractor/ExtractorHTMLTest.java
@@ -24,7 +24,7 @@ import java.util.stream.Collectors;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlMetadata;
import org.archive.modules.CrawlURI;
import org.archive.net.UURI;
diff --git a/modules/src/test/java/org/archive/modules/extractor/JerichoExtractorHTMLTest.java b/modules/src/test/java/org/archive/modules/extractor/JerichoExtractorHTMLTest.java
index edc26c34..8afd729a 100644
--- a/modules/src/test/java/org/archive/modules/extractor/JerichoExtractorHTMLTest.java
+++ b/modules/src/test/java/org/archive/modules/extractor/JerichoExtractorHTMLTest.java
@@ -22,7 +22,7 @@ package org.archive.modules.extractor;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.CrawlMetadata;
import org.archive.modules.CrawlURI;
import org.archive.net.UURI;
diff --git a/modules/src/test/java/org/archive/modules/extractor/UnitTestUriLoggerModule.java b/modules/src/test/java/org/archive/modules/extractor/UnitTestUriLoggerModule.java
index 5ed7f4d6..467d886e 100644
--- a/modules/src/test/java/org/archive/modules/extractor/UnitTestUriLoggerModule.java
+++ b/modules/src/test/java/org/archive/modules/extractor/UnitTestUriLoggerModule.java
@@ -3,7 +3,7 @@ package org.archive.modules.extractor;
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.net.UURI;
/**
diff --git a/modules/src/test/java/org/archive/modules/fetcher/CookieFetchHTTPIntegrationTest.java b/modules/src/test/java/org/archive/modules/fetcher/CookieFetchHTTPIntegrationTest.java
index 41743973..de2ca93b 100644
--- a/modules/src/test/java/org/archive/modules/fetcher/CookieFetchHTTPIntegrationTest.java
+++ b/modules/src/test/java/org/archive/modules/fetcher/CookieFetchHTTPIntegrationTest.java
@@ -32,7 +32,7 @@ import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.collections.Closure;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.io.FileUtils;
import org.archive.bdb.BdbModule;
import org.archive.modules.CrawlMetadata;
diff --git a/modules/src/test/java/org/archive/modules/fetcher/FetchHTTPTest.java b/modules/src/test/java/org/archive/modules/fetcher/FetchHTTPTest.java
index f044806a..4a3575b0 100644
--- a/modules/src/test/java/org/archive/modules/fetcher/FetchHTTPTest.java
+++ b/modules/src/test/java/org/archive/modules/fetcher/FetchHTTPTest.java
@@ -39,7 +39,7 @@ import javax.net.ssl.SSLException;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.io.IOUtils;
import org.apache.http.NoHttpResponseException;
import org.archive.httpclient.ConfigurableX509TrustManager.TrustLevel;
diff --git a/modules/src/test/java/org/archive/modules/forms/FormLoginProcessorTest.java b/modules/src/test/java/org/archive/modules/forms/FormLoginProcessorTest.java
index a07d286e..a343276a 100644
--- a/modules/src/test/java/org/archive/modules/forms/FormLoginProcessorTest.java
+++ b/modules/src/test/java/org/archive/modules/forms/FormLoginProcessorTest.java
@@ -27,7 +27,7 @@ import java.io.ByteArrayOutputStream;
import java.nio.charset.StandardCharsets;
import java.util.List;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.http.HttpRequest;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.util.EntityUtils;
diff --git a/modules/src/test/java/org/archive/modules/net/ServerCacheTest.java b/modules/src/test/java/org/archive/modules/net/ServerCacheTest.java
index 15bdc7ed..726556b3 100644
--- a/modules/src/test/java/org/archive/modules/net/ServerCacheTest.java
+++ b/modules/src/test/java/org/archive/modules/net/ServerCacheTest.java
@@ -18,7 +18,7 @@
*/
package org.archive.modules.net;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.archive.modules.fetcher.DefaultServerCache;
import org.archive.net.UURI;
import org.archive.net.UURIFactory;
diff --git a/modules/src/test/java/org/archive/modules/recrawl/ContentDigestHistoryTest.java b/modules/src/test/java/org/archive/modules/recrawl/ContentDigestHistoryTest.java
index 625d5749..5e99e2d8 100644
--- a/modules/src/test/java/org/archive/modules/recrawl/ContentDigestHistoryTest.java
+++ b/modules/src/test/java/org/archive/modules/recrawl/ContentDigestHistoryTest.java
@@ -49,7 +49,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.logging.Logger;
-import org.apache.commons.httpclient.URIException;
+import org.archive.url.URIException;
import org.apache.commons.io.FileUtils;
import org.archive.bdb.BdbModule;
import org.archive.format.warc.WARCConstants.WARCRecordType;