Как настроить валидатор W3C Unicorn для локальных URI? - PullRequest
4 голосов
/ 14 марта 2012

Мне часто нужно проверять еще не общедоступные веб-сайты, поэтому я не могу использовать общедоступный онлайн-валидатор. Я пытался установить 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/
    
  • да, это работает , но только для публичных адресов; нам нужно изменить

    • одна настройка в unicorn.properties: ACCEPT_LOCAL_ADDRESSES = true
    • пути проверки в observers.properties от http://validator.w3.org/.../*.wadl до file:///.../*.wadl
  • Я могу изменить *.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)

Наконец

Что я могу сделать?

...