如何为本地 URI 设置 W3C Unicorn 验证器?

Hra*_*ban 5 macos macports w3c-validation tomcat6 unicorn

我经常需要检查尚未公开的网站,因此无法使用公共在线验证器。我尝试使用 MacPorts 在我的 OSX (10.7) 计算机上安装 W3C\xe2\x80\x99s Unicorn(因为我不想处理依赖关系)。不幸的是,Unicorn 安装的文档大多丢失或过时,并且邮件列表看起来已经死了。\n免责声明:我不\xe2\x80\x99不懂 Java。

\n\n

这里\xe2\x80\x99是我所做的:

\n\n
    \n
  • 安装 Java 更新至 1.6.0_29(因为 Apple\xe2\x80\x99s 当前版本存在内存泄漏)
  • \n
  • 安装 Tomcat 和依赖项(文档中缺少 ivy,并且\xe2\x80\x99t 不会按预期自动下载):

    \n\n
    sudo port install apache-ant apache-ivy tomcat6 mercurial\n
    Run Code Online (Sandbox Code Playgroud)
  • \n
  • 选择 Mercurial 的 Python 版本;也许更好地使用 python.org-Python 并在那里安装 Mercurial,但我在这台机器上仅\xe2\x80\x99ve 系统和 MacPort\xe2\x80\x99s Python:

    \n\n
    sudo port select python python27\n
    Run Code Online (Sandbox Code Playgroud)
  • \n
  • 重启后自动启动Tomcat:

    \n\n
    sudo launchctl load -w /Library/LaunchDaemons/org.macports.tomcat6.plist\n
    Run Code Online (Sandbox Code Playgroud)
  • \n
  • 将设置添加到.profile

    \n\n
    export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK\nexport CATALINA_HOME=/opt/local/share/java/tomcat6\n
    Run Code Online (Sandbox Code Playgroud)
  • \n
  • 检查输出java -version(我的“A”或“Current”中的Java版本已损坏;java -version只是挂起)

  • \n
  • 修复Java二进制路径;如果没有$JAVA_HOME/bin

    \n\n
    cd $JAVA_HOME; sudo ln -s Commands bin\n
    Run Code Online (Sandbox Code Playgroud)
  • \n
  • 重新开始

  • \n
  • 检查tomcat是否运行http://localhost:8080(ok)

  • \n
  • 获取并编译unicorn:

    \n\n
    cd ~/workspace\nhg clone https://dvcs.w3.org/hg/unicorn\ncd unicorn\nant retrieve compress-css compress-js war cli\n
    Run Code Online (Sandbox Code Playgroud)
  • \n
  • 在tomcat中安装unicorn:

    \n\n
    sudo cp dist/unicorn.war $CATALINA_HOME/webapps/\nsudo cp WebContent/resources/tomcat_policy/* $CATALINA_HOME/conf/\n
    Run Code Online (Sandbox Code Playgroud)
  • \n
  • 是的,它有效,但仅适用于公共地址;我们需要改变

    \n\n
      \n
    • 中的一项设置unicorn.propertiesACCEPT_LOCAL_ADDRESSES = true
    • \n
    • observers.propertieshttp://validator.w3.org/.../*.wadl到 的验证器路径file:///.../*.wadl
    • \n
  • \n
  • 我可以更改*.properties$CATALINA_HOME/webapps/unicorn/WEB-INF/classes(更好)更改~/workspace/unicorn/WebContent/WEB_INF/conf。但对后者的更改永远不会进入.war,don\xe2\x80\x99t 不知道为什么。(也许他们\xe2\x80\x99是和平主义者?)如果*.properties.default重命名为*.properties,他们\xe2\x80\x99在发行版中丢失,如果我不\xe2\x80\x99重命名它们,更改将被忽略。我发现了一个在 中包含该conf-path 的提示$CLASSPATH,但这也没有帮助。

  • \n
  • 因此,我将改编后的配置复制到已安装的 Web 应用程序中,Unicorn 似乎可以运行 - 但验证结果会出现白色页面(状态代码 = 200,但内容长度 = 0)。

  • \n
  • 在 tomcat\xe2\x80\x99s 错误日志中我只找到(don\xe2\x80\x99t 不知道 \xe2\x80\x99s 是否重要):

    \n\n
    INFO: validateJarFile(/opt/local/share/java/tomcat6/webapps/unicorn/WEB-INF/lib/servlet-api-2.5.jar) - jar not loaded. \nSee Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class\n
    Run Code Online (Sandbox Code Playgroud)
  • \n
\n\n

命令行界面

\n\n

在这期间我尝试了命令行界面是否可用。java -jar unicorn.jar显示一些使用提示,但任何验证都失败

\n\n
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1\nat org.w3c.unicorn.UnicornClient.main(UnicornClient.java:113)\n
Run Code Online (Sandbox Code Playgroud)\n\n

最后

\n\n

我能做些什么?

\n