> ## Content Index
> Fetch the complete content index at: https://blog.mebooks.co.nz/llms.txt
> Use this file to discover other available public pages before exploring further.

# Creating a WAR File for Epubcheck
- URL: https://blog.mebooks.co.nz/creating-a-war-file-for-epubcheck/
- Published: 2012-10-01T03:58:00.000Z
- Updated: 2017-10-01T04:02:58.000Z
- Author: Jason Darwin
- Tags: #Import 2026-09-23 10:11

> Note: I've made some changes to this post as a result of the build mechanism for epubcheck-3.0-RC-1 moving to using Apache Maven. More details can be found in our [current repository on github](https://github.com/jcdarwin/epubcheck-web?ref=blog.mebooks.co.nz).

If, like me, you do a lot of EPUB creation, you therefore find presumably yourself doing a lot of EPUB validation.

Although we've seen more validation tools emerge in recent times, the standard is still [epubcheck](https://github.com/idpf/epubcheck?ref=blog.mebooks.co.nz), a Java archive that can be used to check the validity of EPUB files at the command line:

```
$java -jar epubcheck [name of epub file]

```

Last year (back when EPUB3 was still twinkling in its makers eyes), releases of the epubcheck Java .jar file were accompanied by a .war file, which was very useful as it could be hosted by a Java-based webserver (e.g. [Apache Tomcat](http://tomcat.apache.org/?ref=blog.mebooks.co.nz)), and used to provide a web-based interface for EPUB validation using epubcheck. This is how the the IDPF offer their [online EPUB validation service](http://validator.idpf.org/?ref=blog.mebooks.co.nz).

However, recent builds of epubcheck have not been accompanied by this `.war` file meaning that, for your own purposes, you were looking at having to use the command line version, as described above. You could still of course use the [IDPF's online validation service](http://validator.idpf.org/?ref=blog.mebooks.co.nz), but this is only for non-commercial use and for files less than 10MB.

So, after running into a confused situation where a client mistakenly thought their EPUB3 was invalid because it was being checked against an older version of the epubcheck `.war` file used by a web service, I thought it was high time I worked out how to create a `.war` from a recent release.

As epubcheck is written in Java and not being a Java programmer myself (and there's good reason for this, summed up nicely in this post about [Execution in the Kingdom of Nouns](http://steve-yegge.blogspot.co.nz/2006/03/execution-in-kingdom-of-nouns.html?ref=blog.mebooks.co.nz)), I was a little tremulous about tackling this, but it actually turned out to be relatively easy.

The steps are below, and the presumption is that you're running either a Debian / Ubuntu distribution, or Cygwin on Windows.

## Get the latest epubcheck

Download the binary latest version of [epubcheck](http://code.google.com/p/epubcheck/downloads/list?ref=blog.mebooks.co.nz), and extract the zip file. Inside you should find the compiled `.jar` file (e.g. `epubcheck-3.0-RC-1.jar`) and the `lib` folder.

## Extract epubcheck

Make a new folder called `epubcheck` and inside create a subfolder called `com.adobe.epubcheck`.

Inside the `com.adobe.epubcheck` folder, create a `dist` folder and copy into this the compiled `.jar` file extracted from the zip file in the previous step.

Also, copy the `lib` folder extracted from the zip file in the previous step such that it's a direct subfolder of `com.adobe.epubcheck`.

## Get the epubcheck .war compilation code

Checkout a subtree of the epubcheck code trunk, which contains the files needed for building the `.war`. It appears that all the epubcheck development has taken place in branches, and has not been merged back into the trunk, and therefore some of the code in the trunk is quite old, but that's fine for the bit of the trunk that we need to build the `.war`. Inside the `epubcheck` folder:

```
svn checkout http://epubcheck.googlecode.com/svn/trunk/com.adobe.epubcheck.web ./epubcheck/com.adobe.epubcheck.web</pre>

```

## Tweak the build file

Make some changes to the build file, `com.adobe.epubcheck.web\build-war.xml`, specifically,

- Include the correct version number, as found in the name of `.jar` file
- Remove the `epubcheck` dependency from the `compile` step, as we'll be using the downloaded `.jar` file:  
```  
  <!-- <target name="compile" description="Compiles all src classes" depends="removeClasses, epubcheck"> -->  
```
- Remove the `buildEpubCheckWAR` dependency from the `compile` step:  
```  
  <!-- <target name="buildEpubCheckWAR" description="creates epubcheck war file" depends="createDistributionDir, epubcheck, compile" > -->  
```

## Customise the HTML

If you want to customise the HTML and CSS used for the web service, then make the amendments to the code in `com.adobe.epubcheck.web\http_root`

## Build the .war

```
ant -f com.adobe.epubcheck.web/build-war.xml

```

## Install the .war

```
/etc/init.d/tomcat stop
cd /usr/local/tomcat/webapps
cp /tmp/epubcheck/com.adobe.epubcheck.web/dist/epubcheck-3.0-RC-1.war epubcheck.war
/etc/init.d/tomcat start

```

## Restart Tomcat

Once Tomcat's restarted, you should be able to see the epubcheck service at [http://localhost:8080/epubcheck](http://localhost:8080/epubcheck?ref=blog.mebooks.co.nz).

On my system I use Apache to proxy requests from port 80 to 8080, so I can make it available as I do at [http://mebooks.co.nz/epubcheck/](http://mebooks.co.nz/epubcheck/?ref=blog.mebooks.co.nz)