小编use*_*116的帖子

XML Schema 1.1无法识别'assert'或'assertion'

我试图在XSD中使用以下内容

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" >
<xs:element name="dimension">
  <xs:complexType>
    <xs:attribute name="height" type="xs:int"/>
    <xs:attribute name="width" type="xs:int"/>
    <xs:assert test="@height = @width"/>
  </xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

我知道assert/assertion是XML Schema 1.1的一部分,但不是1.0.但是我读过的所有内容都表明两者的名称空间相同:http://www.w3.org/2001/XMLSchema

一个小问题是我用来编写Schema(Microsoft Visual Studio)的程序无法识别'assert'元素,说' 命名空间中的元素complexType(...)具有无效的子元素'assert'.

主要的问题是,当我实际尝试使用xmllint对此模式验证XML时,它会抛出一个错误说

" element assert: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}complexType': The content is not valid. Expected is (annotation?, (simpleContent | complexContent | ((group | all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?))))
Run Code Online (Sandbox Code Playgroud)

虽然被指向了1.1名称空间,但xmllint/visual studio却无法识别1.1吗?

xml xsd xsd-validation xsd-1.1

13
推荐指数
1
解决办法
6808
查看次数

如何将目录添加到eclipse类路径?

我正在尝试运行另一个人创建的已经存在的eclipse项目.
在将其导入eclipse并尝试运行As-> Java Application之后,它失败了,因为它无法在bin/resources中找到.properties文件

我打印出eclipse正在使用的类路径

logger.info(System.getProperty("java.class.path"));
Run Code Online (Sandbox Code Playgroud)

当然,它包括bin,以及所有lib/*.jars,但不包括bin/resources.将.properties文件复制到bin中会使程序正常工作,但我想了解如何将目录添加到eclipse类路径中.

我尝试了几件事,但都没有

export CLASSPATH=$CLASSPATH:/home/me/programdir/bin/resources
Run Code Online (Sandbox Code Playgroud)

这没用.我理解这不是解决这个问题的理想方法,但我认为它会解决问题(我有更多的窗口而不是linux背景所以也许我错过了linux中系统变量的一些细微差别)

接下来,我尝试在Eclipse中的Run-> Configurations对话框中修改VM参数

-classpath "/home/me/programdir/bin/resources"
Run Code Online (Sandbox Code Playgroud)

这里也没有运气,这让我很困惑,因为我确信它会起作用,对于需要在类路径中添加一个额外文件夹的特定程序来说,这似乎是一个合理的解决方案.

接下来我尝试直接修改build.xml.我找到了定义类路径的部分,并为bin/resources添加了我自己的行,如下所示:

<path id="classpath">
    <fileset dir="./bin/resources" includes="**/*.properties"/>
    <fileset dir="./lib" includes="**/*.jar" /> 
</path>
Run Code Online (Sandbox Code Playgroud)

这也是不成功的.这让我更加困惑,所以我注释掉了整个路径元素,并且记录器打印出的类路径没有改变,所以很明显,无论使用什么类路径eclipse,它肯定不是这个.在我看来这是最好的解决方案,如果它有效:build.xml文件可以使用正确的添加进行检查,以防止将来的用户遇到问题.

接下来我尝试了IDE方法.运行 - >配置 - >类路径 - >用户条目 - >高级,只需添加bin/resources文件夹.这完美,程序找到属性文件,一切都很好.但是,我不满意我以前的努力失败了,没有我真正理解为什么.似乎每个人都应该工作.

另外,我想确保以这样的方式修复此问题,即我检入的代码捕获它,以便后续用户不必执行相同的步骤.因此我的解决方案并不十分令人满意,因为我不确定实际的代码片段是如何更改的,因此无法验证是否已签入"修复".

你如何找到eclipse用于其类路径的实际定义?我曾以为这将是build.xml类路径定义,但似乎根本不是这样.

eclipse classpath

10
推荐指数
2
解决办法
4万
查看次数

如何在Jetty类路径中将jar放入jetty/lib?

我有Jetty jetty-9.2.3.v20140905

我的理解是lib/jar或lib/ext中的jar自动出现在类路径中,但这可能是jetty 8的旧行为.

我正在尝试使用websockets部署webapp.随着我在webapps目录中部署的WAR文件,jetty一直抱怨它找不到位于jetty/lib目录中的jar(jetty-http,jetty-io,jetty-security,jetty-server,jetty-servlet,jetty- util是我的webapp需要的,它找不到)

当我执行--module-ext时,放在lib/ext中的jar也没有被拾取

我该如何解决这个问题?

为了解决下面的答案,(编辑原始问题)我尝试启用服务器模块,其server.mod文件包含以下行:

[lib]
lib/servlet-api-3.1.jar
lib/jetty-schemas-3.1.jar
lib/jetty-http-${jetty.version}.jar
lib/jetty-server-${jetty.version}.jar
lib/jetty-xml-${jetty.version}.jar
lib/jetty-util-${jetty.version}.jar
lib/jetty-io-${jetty.version}.jar
Run Code Online (Sandbox Code Playgroud)

从命令行,我做

java -jar start.jar --module=server jetty.port=8182
Run Code Online (Sandbox Code Playgroud)

结果是:

2014-10-30 15:26:13.907:WARN:oejuc.AbstractLifeCycle:main: FAILED   
org.eclipse.jetty.annotations.ServletContainerInitializersStarter@2635068e: 
java.lang.NoClassDefFoundError: org/eclipse/jetty/server/Handler
java.lang.NoClassDefFoundError: org/eclipse/jetty/server/Handler
Run Code Online (Sandbox Code Playgroud)

org.eclipse.jetty.server.Handler就在jetty-server jar中,坐在我的jetty/lib目录下.

也许jetty.version或jetty.base变量不正确?

当我表演时

--list-classpath
Run Code Online (Sandbox Code Playgroud)

我确实看到了lib目录中的所有jar.

java jetty classpath

7
推荐指数
1
解决办法
1万
查看次数

如何访问GWT菜单栏弹出式面板/子菜单?

我正在尝试将一些鼠标监听器添加到GWT的MenuBar的子菜单/级联菜单中.可悲的是,我似乎无法直接访问子菜单popuppanel - 这样做的方法(getPopup())是私有的.由于GWT编译的方式,你无法通过反射访问它.

将鼠标监听器添加到主菜单栏(以检测鼠标何时位于菜单栏边界内)非常简单.但我无法想办法添加一个鼠标监听器来告诉鼠标何时进入其中一个级联子菜单.

我在做什么是这样的:

com.google.gwt.user.client.ui.MenuBar myMainBar = new MenuBar();
myMainBar.addDomHandler(menuHoverOutHandler, MouseOutEvent.getType());
myMainBar.addDomHandler(menuHoverOverHandler, MouseOverEvent.getType());
Run Code Online (Sandbox Code Playgroud)

这适用于实际的GWT MenuBar.当我鼠标进入时,mouseOverEvent会触发.当我鼠标移出时,MouseOutEvent会触发.

问题是如果我从主菜单栏打开一个子菜单,鼠标进入该菜单也会触发MouseOutEvent.我不需要那样做.

当我说子菜单时,我的意思是这里看到的东西:

http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/ui/MenuBar.html

因此,只要我在列出Style,Fruit和Term的'main'栏中,鼠标事件就会识别出来.

但是,如果我下到菜单上显示Bold,Italicized,More,那么鼠标事件就相信我完全离开了菜单栏.我需要一种方法来确定鼠标是否位于其中一个子菜单中.(或者这个主菜单栏的子菜单在某处打开)

你不能简单地做

myMainBar.getPopup()
Run Code Online (Sandbox Code Playgroud)

并将侦听器添加到生成的PopupPanel中,因为getPopup是私有的.我正在寻找另一种方法来获取MenuBar.popup

似乎没有方法可以判断其中一个子菜单是否打开,这对我来说有点困惑.似乎有一种令人沮丧的缺乏与这些子菜单交互的能力,我想知道我是否遗漏了一些东西.

java gwt popup menubar submenu

5
推荐指数
1
解决办法
957
查看次数

标签 统计

classpath ×2

java ×2

eclipse ×1

gwt ×1

jetty ×1

menubar ×1

popup ×1

submenu ×1

xml ×1

xsd ×1

xsd-1.1 ×1

xsd-validation ×1