我经常需要检查尚未公开的网站,因此无法使用公共在线验证器。我尝试使用MacPorts在我的OSX(10.7)机器上安装W3C的Unicorn(因为我不想处理依赖关系)。不幸的是,Unicorn安装的文档大多缺失或过时,邮件列表看起来已经死了。 免责声明:我不懂Java。
这就是我的所作所为:
安装Tomcat和依赖项(文档中缺少常春藤,并且不会按预期自动下载):
sudo port install apache-ant apache-ivy tomcat6 mercurial
为Mercurial选择Python版本;或许最好使用python.org-Python并在那里安装Mercurial,但我在这台机器上只有系统和MacPort的Python:
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”或“当前”中断了; java -version
只是挂起)
修复Java二进制路径;如果没有$JAVA_HOME/bin
:
cd $JAVA_HOME; sudo ln -s Commands bin
重新开始
检查tomcat是否在http://localhost:8080
(ok)
获取并编译独角兽:
cd ~/workspace
hg clone https://dvcs.w3.org/hg/unicorn
cd unicorn
ant retrieve compress-css compress-js war cli
在tomcat中安装独角兽:
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
,则他们在发行版中会丢失,如果我不重命名,则会忽略更改。我发现了一个提示,要在$CLASSPATH
中包含这个conf-path,但这也无济于事。
所以我将经过调整的配置文件复制到已安装的webapp中,并且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
Inbetween我试过命令行界面可用。 java -jar unicorn.jar
显示了一些使用提示,但是对任何内容的验证都失败了
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at org.w3c.unicorn.UnicornClient.main(UnicornClient.java:113)
我该怎么办?