java.rmi.server.UID is a restricted

GAEjでcompojureを使う場合、cljの先頭で

(ns servlet
  (:gen-class :extends javax.servlet.http.HttpServlet)
  (:use compojure.html))

してはいけません!!

もし、compojure.htmlを使おうとすると・・・

HTTP ERROR 500

Problem accessing /. Reason:

    java.rmi.server.UID is a restricted class. Please see the Google  App Engine developer's guide for more details.

Caused by:

java.lang.NoClassDefFoundError: java.rmi.server.UID is a restricted class. Please see the Google  App Engine developer's guide for more details.
	at com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51)
	at org.apache.commons.fileupload.disk.DiskFileItem.(DiskFileItem.java:103)
	at java.lang.Class.forName0(Native Method)
         (以下略)

compojure.htmlのいづれかのモジュールがjava.rmi.server.UIDを要求していると思われます。具体的にどれなのかは知りません。


必要なものだけuseするようにしましょう。

(ns servlet
  (:gen-class :extends javax.servlet.http.HttpServlet)
  (:use [compojure.http servlet routes]))