This file lists the dependences for Apache Jena Fuseki.
  Version numbers are given in the POM file for a particular distribution. 

Apache Projects:
Apache Software License
  Apache Jena, including the Jena IRI library
  Apache Xerces-J
  Apache log4j
  Apache HttpComponents (HTTP Client)
  Apache Commons Codec
  Apache Commons FileUpload
  Apache Lucene
  Apache Solr

SLF4J : http://www.slf4j.org/
  Copyright (c) 2004-2008 QOS.ch
  MIT License

JUnit : http://junit.org/
  Common Public License - v 1.0

Jetty: http://www.eclipse.org/jetty/
  Apache License 2.0 
  (also avilable under Eclipse Public License 1.0)
