尝试使用Intellij IDEA运行@ org.junit.Test。
这是一个OSGi套件,当点击Run'testMyTest'
获取以下异常:
Error:osgi: [b2b-bundle] The default package '.' is not permitted by the Import-Package syntax.
This can be caused by compile errors in Eclipse because Eclipse creates
valid class files regardless of compile errors.
The following package(s) import from the default package null
Run Code Online (Sandbox Code Playgroud)
有人可以就这个例外情况发表看法吗?
谢谢彼得
我有以下问题:我的日食氧气无法运行(错误附加).当我在下载后运行它(在9月1日和12月2日测试)时,一切都很好.但是,当我重新启动计算机时,除非重新安装,否则eclipse不会重新启动.我已经清除了eclipse缓存和我的项目一样(甚至从repo获取了新版本),工作区和eclipse安装位置也很新鲜.我已阅读如https://bugs.eclipse.org/bugs/show_bug.cgi?id=475392,https://bugs.eclipse.org/bugs/show_bug.cgi?id=514895和其他相关的帖子,没"尽管如此.任何的想法?我正在使用Windows 10 64位和JDK 9.0.1 + 11.我唯一的插件是BndTools 3.5,最新的,项目需要java 8(当前运行时jdk是152).在运行我的项目并同时在示例bnd项目(http://enroute.osgi.org/tutorial_base/600-testing.html)上解决依赖关系后的星期五开始出现问题.之后无法运行eclipse.但是,我之前做过,并没有遇到任何问题(我的意思是打开示例并运行它).另外,我已经清除了p2,mvn和bnd缓存.
来自eclipse .log的下面提到的堆栈:
!SESSION 2017-12-18 16:47:57.660 -----------------------------------------------
eclipse.buildId=4.7.2.M20171123-0800
java.version=9.0.1
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=pl_PL
Framework arguments: -product org.eclipse.epp.package.java.product
Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product
!ENTRY org.eclipse.osgi 4 0 2017-12-18 16:47:59.711
!MESSAGE Application error
!STACK 1
org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(SWT.java:4533)
at org.eclipse.swt.SWT.error(SWT.java:4448)
at org.eclipse.swt.SWT.error(SWT.java:4419)
at org.eclipse.swt.widgets.Display.error(Display.java:1263)
at org.eclipse.swt.widgets.Display.checkDevice(Display.java:767)
at org.eclipse.swt.widgets.Display.addListener(Display.java:628)
at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.<init>(IDEWorkbenchAdvisor.java:187)
at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.<init>(IDEWorkbenchAdvisor.java:195)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at …Run Code Online (Sandbox Code Playgroud) 嗨,我有一个函数,我将返回无限的并行流(是的,在这种情况下它要快得多)生成的结果。所以很明显(或不)我用过
Stream<Something> stream = Stream.generate(this::myGenerator).parallel()
Run Code Online (Sandbox Code Playgroud)
它有效,但是......当我想限制结果时它不会(当流是顺序的时一切都很好)。我的意思是,当我做类似的事情时,它会产生结果
stream.peek(System.out::println).limit(2).collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)
但即使peek输出产生超过 10 个元素,collect仍然没有最终确定(生成很慢,所以这 10个元素甚至可能需要一分钟)......这是一个简单的例子。实际上,限制这些结果是未来,因为主要期望是在用户终止进程之前只获得比最近的结果更好的结果(其他情况是首先返回我可以通过抛出异常findFirst所做的事情,如果没有其他帮助[没有,即使我在控制台上有更多元素并且在大约 30 秒内没有更多结果])。
如何复制?我的想法也是使用 RxJava,还有另一个问题 - 如何使用该工具(或其他工具)实现类似的结果。
public Stream<Solution> generateSolutions() {
final Solution initialSolution = initialSolutionMaker.findSolution();
return Stream.concat(
Stream.of(initialSolution),
Stream.generate(continuousSolutionMaker::findSolution)
).parallel();
}
new Solver(instance).generateSolutions()
.map(Solution::getPurpose)
.peek(System.out::println)
.limit(5).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
实施findSolution并不重要。它有一些副作用,比如添加到解决方案仓库(singleton、sych 等),但仅此而已。