我正在尝试调试一台位于中国(离这里很远)的机器,并且连接速度非常慢。intellij 远程调试器的超时时间很短,因此我收到无法打开调试器端口:java.net.ConnectException“连接超时:”
而且我无法调试。是否可以增加连接超时时间?如何?
对于向后兼容性测试,我正在创建我自己的类加载器来加载我以前版本的一些代码。在我拥有自定义对象(来自较旧的自定义类)之后,我将使用反射调用它的 API。但是,当此类 API 方法具有自定义参数(不是 java 库的一部分)时,例如:
public void MyMethod(MyObj a) {}
Run Code Online (Sandbox Code Playgroud)
当我使用反射调用此方法时,我得到:
java.lang.IllegalArgumentException:参数类型不匹配
因为我从默认类加载器传递 MyObj 而该方法期望从自定义类加载器获取 MyObj。
我用来调用该方法的代码(而代理是由我的自定义类加载器加载的,代理的 api 方法的参数来自我的测试类,该类由默认类加载器加载)
private Object invoke(Object... args) {
try {
final String methodName = getMethodName();
final Class<?>[] methodArgs = getMethodArgs(methodName);
return agent.getClass().getMethod(methodName, methodArgs).invoke(agent, args);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
return null;
}
private Class<?>[] getMethodArgs(String methodName) {
final Method[] declaredMethods = agent.getClass().getDeclaredMethods();
for (Method method : declaredMethods) {
if …
Run Code Online (Sandbox Code Playgroud) 我想要一个具有内容或某个属性的元素,但不能同时具有两者。元素可以如下所示:
<Location ref="blah"/>
Run Code Online (Sandbox Code Playgroud)
或这个:
<Location> <aaaLocation>...</aaaLocation> <Location>
Run Code Online (Sandbox Code Playgroud)
但不是这样的:
<Location ref="blah"> <aaaLocation>...</aaaLocation> <Location>
Run Code Online (Sandbox Code Playgroud)
我尝试了一些变化:
<xs:complexType name="FatherOfLocatiion">
<xs:choice>
<xs:element name="Location">
<xs:complexType>
<xs:sequence>
<xs:element name ="aaaLocation" type="Alocation"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Location">
<xs:complexType>
<xs:attribute name="ref" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
该模式在XML spy等工具中有效,但是当我尝试使用jaxb从中生成对象时,出现以下错误:
模型组中会出现多个名称为“ Location”且具有不同类型的元素。
还有其他方法可以强制执行吗?
我有一个文本字段,其定义如下:
<fieldType name="myTextField" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="1"
maxGramSize="40"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)
现在,我有一个包含此文本的字段:"嗨,这是关于solr的问题"
另一个包含此文本的字段:"aaa solr bbb"
当我的查询字符串是"about solr"时,我得到两个字段作为结果,虽然我只想要第一个,因为它是唯一包含所有字符(包括空格)的字符串.这不仅发生在空白区域,还与其他特殊字符如":"一起发生.用括号搜索(关于solr)没有用.
注意:在搜索之前我正在逃避我的字符串:
String s1 = ClientUtils.escapeQueryChars(s);
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我甚至不确定这个问题是否有答案\ sutiable design但值得一提......我有一个抽象类(servlet)从一些客户端获取数据(其中包括)processResults方法(抽象),以及onResultsReceived(不是抽象的)
public abstract class dataServlet implements HttpServlets {
protected onDataReceived(){//blah blah}
public abstract void processData();
}
Run Code Online (Sandbox Code Playgroud)
我onDataReceived方法我正在为processData方法的所有实现做一些必要的常见事情.如果明天有人会添加dataServlet的新实现,我想确保他将在他的processData实现中调用onDataReceived.有没有办法,已知设计这样做?
java ×2
classloader ×1
debugging ×1
jaxb ×1
oop ×1
reflection ×1
solr ×1
tokenize ×1
xml ×1
xsd ×1