Мне часто нужно проверять еще не общедоступные веб-сайты, поэтому я не могу использовать общедоступный онлайн-валидатор. Я пытался установить W3C Unicorn на мою машину с OSX (10.7), используя MacPorts (потому что я не хотел справляться с зависимостями). К сожалению, документы по установке Unicorn в основном отсутствуют или устарели, и список рассылки выглядит мертвым.
Отказ от ответственности: я не знаю Java.
Вот что я сделал:
- установить обновление Java до 1.6.0_29 (так как у текущего Apple есть утечка памяти)
установка Tomcat и зависимостей (ivy отсутствует в документах и не загружается автоматически, как предполагается):
sudo port install apache-ant apache-ivy tomcat6 mercurial
выбор версии Python для Mercurial; возможно, лучше использовать python.org-Python и установить там Mercurial, но на этом компьютере я использую только систему и Python для MacPort:
sudo port select python python27
автоматически запускать Tomcat после перезагрузки:
sudo launchctl load -w /Library/LaunchDaemons/org.macports.tomcat6.plist
добавить настройки к .profile
:
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
export CATALINA_HOME=/opt/local/share/java/tomcat6
проверить вывод java -version
(моя версия Java в «A» или «Current» была сломана; java -version
просто зависла)
исправить двоичный путь Java; если нет $JAVA_HOME/bin
:
cd $JAVA_HOME; sudo ln -s Commands bin
перезагружать
проверить, работает ли tomcat http://localhost:8080
(ок)
получить и скомпилировать единорога:
cd ~/workspace
hg clone https://dvcs.w3.org/hg/unicorn
cd unicorn
ant retrieve compress-css compress-js war cli
установить единорога в кота:
sudo cp dist/unicorn.war $CATALINA_HOME/webapps/
sudo cp WebContent/resources/tomcat_policy/* $CATALINA_HOME/conf/
да, это работает , но только для публичных адресов; нам нужно изменить
Я могу изменить *.properties
в $CATALINA_HOME/webapps/unicorn/WEB-INF/classes
или (лучше) в ~/workspace/unicorn/WebContent/WEB_INF/conf
. Но изменения в последнем никогда не превращаются в .war
, не знаю почему. (Может быть, они пацифист?) Если *.properties.default
переименованы в *.properties
, они отсутствуют в дистрибутиве, если я не переименую их, изменения игнорируются. Я нашел подсказку, чтобы включить этот conf-путь в $CLASSPATH
, но это тоже не помогло.
Таким образом, я копирую адаптированные конфиги в установленное веб-приложение, и Unicorn, похоже, запускается - но проверка приводит к появлению белой страницы (код состояния = 200, но длина содержимого = 0).
В журнале ошибок tomcat я нахожу только (не знаю, важно ли это):
INFO: validateJarFile(/opt/local/share/java/tomcat6/webapps/unicorn/WEB-INF/lib/servlet-api-2.5.jar) - jar not loaded.
See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
CLI
Между прочим, я пытался использовать интерфейс командной строки. java -jar unicorn.jar
показывает некоторые подсказки по использованию, но проверка чего-либо завершается неудачно с
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at org.w3c.unicorn.UnicornClient.main(UnicornClient.java:113)
Наконец
Что я могу сделать?