我们的应用程序已迁移到OSGi,但我无法在Eclipse中启动/调试它.过程是什么:OSGi应用程序开发人员是否期望建立Equinox环境,安装数百个bundle(jar = bundle?),并从控制台启动?换句话说,推出"热插拔天赋"应用程序不同于"模块化挑战"应用程序吗?
次要的,更具体的问题.有一个引导程序包应该可以处理所有事情,但是在加载一堆类之后它会变慢并且几乎挂起:
...
...
...
Flat profile of 0.22 secs (16 total ticks): main
Interpreted + native Method
16.7% 1 + 0 java.awt.Toolkit.addAWTEventLi[Loaded java.awt.SentEvent from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
stener
16.7% 1 + 0 jav[Loaded java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
a.util.regex.Pattern.compile
16.7% 1 + 0 sun.util.logging.PlatformLogger.<init>
50.0% 3 + 0 Total interpreted
Thread-local ticks:
62.5% 10 Blocked (of total)
50.0% 3 Class loader
...
...
...
[Loaded sun.reflect.Label$PatchInfo from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
[Loaded sun.reflect.MethodAccessorGenerator$1 from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar]
[Loaded sun.reflect.ClassDefiner from C:\Program Files\Java\jdk1.7.0_04\jre\lib\rt.jar] …Run Code Online (Sandbox Code Playgroud) 线程转储包含大量信息.例如,如果我怀疑某个动作不止一次被触发,那么我需要做的就是每次触发动作时转储堆栈跟踪,然后调查堆栈以查找错误的动作.
在某些情况下,鼓励开发人员放弃顺序执行的概念简单性.例如,Swing提供SwingWorker帮助程序来解决单线程EDT的限制.现在,如果我转储堆栈跟踪,它是无用的,因为该操作是由SwingWorker触发的,并且没有关于谁启动了SwingWorker任务的信息.
那么,我该如何排除故障?是否有一个聪明的技巧"重定向"线程转储以遵循真正的原因?
我发现自己忙着重构我的宠物项目,并删除与异常抛出声明相关的所有噪音.基本上,违反条件的一切都是断言违规,或者正式地说,AssertionError,在Java中慷慨地允许从方法的签名中省略.我的问题是:拥有Exceptions层次结构有什么意义?我的经验是每个例外都是独一无二的,并且没有正式的标准来确定一组例外是另一组的子集.即使是已检查和未检查的异常之间的区别也是模糊的,例如,当懒惰(或不耐烦)的程序员可以轻松地将其包装到RuntimeException中并重新抛出它时,为什么我会坚持客户端代码捕获异常?
JTable列中的小部件预计与正常小部件无法区分,对吧?似乎存在行为差异,采用Swing文档示例并将鼠标移动到素食列中的复选框...它们根本没有反应.我知道那些只是小部件代理,所以突出显示必须手动完成,所以我该如何解决这个问题呢?我试图widget.requestFocusInWindow();
在mouseMoved()为没有成功替代部件事件处理程序.还有其他解决方法吗?
compareTo方法是否有任何约束命令将对象放入标准java TreeSet(即实现为红黑树的集合)?我有
public class RuleTuple implements Comparable {
String head;
String[] rhs;
public String toString() {
StringBuffer b = new StringBuffer();
b.append(head+":");
for( String t: rhs )
b.append(" "+t);
return b.toString();
}
public int compareTo(Object obj) {
RuleTuple src = (RuleTuple)obj;
int cmp = head.compareTo(src.head);
if( cmp!=0 )
return cmp;
if( rhs.length != src.rhs.length )
return rhs.length - src.rhs.length;
for( int i=0; i<rhs.length; i++ )
if( rhs[i].compareTo(src.rhs[i]) != 0 )
return rhs[i].compareTo(src.rhs[i]);
return 0;
}
...
}
Run Code Online (Sandbox Code Playgroud)
我假设任何将对象映射到线性顺序的方法都很好,只要它符合部分顺序标准:反身性,不对称性和传递性.其中只有传递性并不是立即显而易见的,但在我看来,如果通过排序标准比较对象,则传递性如下.(我首先比较标题,如果相同,则比较rhs的长度,如果相同,则比较数组的元素.)
显然,RuleTuple.compareTo()方法不一致,因为当删除"test:test [22,33)"时,它按以下顺序遍历树: …
将java StringTokenizer转换为kotlin split时,我无法提供字符分隔符列表:
val delim : Array<Char> = arrayOf('(',')','{','}','[',/*many more...*/)
sourceExpr.split(delimiters=*delim,ignoreCase=false,limit=0)
Run Code Online (Sandbox Code Playgroud)
这里kotlin编译器出于某种原因无法消除split(vararg String,...)和之间的歧义split(vararg Char,...).问题:
我无法确定以下RHS预期的类型参数
ArrayList<Pair<ParseNode,ParseNode>>[] nodes = new ArrayList[indexes.length];
Run Code Online (Sandbox Code Playgroud)
为什么副本<Pair<ParseNode,ParseNode>>不合法?
Eclipse是否有理由在以下声明中报告类型安全警告?
Map<String,List<Map<String, ParseNode>>> mapX = new HashMap();
Run Code Online (Sandbox Code Playgroud)
我知道所有mapX用法都是强类型的,但是java泛型坚持提供HashMap参数化类型(除了在代码中添加噪声之外)可以实现什么?