我有一些代码使用JAXB API类,它们是作为Java 6/7/8中JDK的一部分提供的.当我使用Java 9运行相同的代码时,在运行时我得到错误,指示无法找到JAXB类.
自Java 6以来,JAXB类已作为JDK的一部分提供,为什么Java 9不再能够找到这些类?
我有ConcurrentLinkedDeque,我正在使用同步推送/弹出元素,我有一些异步任务,从堆栈中取一个元素,如果这个元素有邻居它正在推动它堆栈.
示例代码:
private ConcurrentLinkedDeque<Item> stack = new ConcurrentLinkedDeque<>();
private ExecutorService exec = Executors.newFixedThreadPool(5);
while ((item = stack.pollFirst()) != null) {
if (item == null) {
} else {
Runnable worker = new Solider(this, item);
exec.execute(worker);
}
}
class Solider{
public void run(){
if(item.hasNeighbors){
for(Item item:item.neighbors){
stack.push(item)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想在while循环中有另外的声明来回答这个问题 - "Executor中的任何任务都在工作吗?"
最近,IBM创建了一个名为"OpenLiberty"的新开源项目,该项目主要与WebSphere Liberty的代码库共享.
OpenLiberty与WebSphere Liberty有什么区别?我可以使用免费的开源版本获得哪些功能,以及WebSphere Liberty提供哪些额外功能?
我有Windows 7,Windows 8和Windows 10系统,它们的行为类似.
当我在开始菜单中键入命令提示符并按Enter键时,会出现一个标题为命令提示符的窗口.我给它一个蓝色背景和一个绿色文本.当我在命令行中键入start,cmd或bat文件的名称时,它会打开一个标题为cmd的窗口,我给出了黑色和绿色文本的背景.似乎颜色存储但是...嗯......
当我在Windows 10的开始菜单中键入cmd时,会出现一个标题为"cmd"的窗口,但它会从"命令提示符"窗口中调出蓝色背景和绿色文本,但是cmd从该窗口键入会打开一个新的黑色和绿色样式.当我双击批处理文件时,它会打开一个标题为命令提示符的窗口,其中包含不同的字体和带有白色文本的黑色背景.当我输入command它时只打印DOS和版权标题,但start command打开一个标题为COMMAND.COM的窗口,其中包含不同的字体和带有白色文本的黑色背景.
当cmd /?在屏幕上显示键入参数列表时.其中一个是/ Q. 它说它在新实例中关闭了echo.当我输入cmd /Q命令提示符或cmd时,它会使用相同的标题替换窗口,但使用黑色和绿色配色方案,并且不会关闭回声.当我键入时start cmd /q,完全相同的事情发生,但'start cmd.exe/q'实际上产生一个错误,指出/ Q不是有效的开关.
这真的只是我在这里遇到的问题的一小部分,我甚至无法开始整理它.如果那里的一些老兵知道明显的命令提示之间的微妙差异,以及调用它们的方式,我会很感激那个人为我排序那个烂摊子.
我在里面使用 WebSphere Liberty。由于 WebSphere Liberty 需要频繁的 xml 编辑,而使用 Dockerfile 命令是不可能的。我必须不时地 docker-commit 容器,以便其他人使用我的图像。
命令是这样的:
docker commit -m "updated sa1" -a "Song" $id company/wlp:v0.1
Run Code Online (Sandbox Code Playgroud)
大学正在对镜像做类似的事情,他们继续每天多次 docker commit 容器。
有一天,我们将在生产环境中部署映像。
Q1:是否建议频繁提交 docker-commit 的做法?
Q2:它会留下任何潜在的问题吗?
Q3:它会创建一个额外的层吗?我阅读了docker-commit 文档,其中没有提到它是否会创建另一个层,我认为这意味着没有。
这是我的文件 AllTests 代码:
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
ElementTests.class
})
public class AllTest {}
Run Code Online (Sandbox Code Playgroud)
元素测试.java
import org.junit.Test;
import pl.polsl.lab1.Model.*;
import static org.junit.Assert.*;
import org.junit.Test;
public class ElementTests {
@Test
public void properSymbolPlayerTest()
{
//given
ElementOfBoard element = new ElementOfBoard();
ElementOfBoard element2 = new ElementOfBoard();
//when
element.setSymbol(1);
element.setSymbol(2);
//then
assertEquals('O', element);
assertEquals('X', element2);
}
}
Run Code Online (Sandbox Code Playgroud)
请问怎么解决啊 我正在使用 junit 4.11。我真的不知道初始化错误可能是什么。你能帮我吗?
我的堆栈跟踪:
org/hamcrest/SelfDescribing
java.lang.NoClassDefFoundError
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native …Run Code Online (Sandbox Code Playgroud) 我宁愿通过命令行安装和卸载 Java 应用程序 (EAR),并在 Windows 中保存为快捷方式,而不是通过繁琐的管理控制台。
请注意,我在Windows中运行 WebSphere Application Server v8.5 ,因此我需要DOS命令,而不是Unix命令。
我想使用Java在Websphere-Liberty服务器上实现单点登录.我想使用LDAP对用户进行身份验证.
我搜索了很多但找不到确切的例子.我已经检查了堆栈溢出的每个可用示例.但没有运气.
如果可以为它提供演示或示例代码,那将是很好的.
提前致谢.
更新:我能够在华夫饼干的帮助下实现相同的功能..但华夫饼不适用于Linux/Unix... 谁能帮帮我吗?
我正在尝试迁移某些 JSON 数据绑定代码的实现细节,以使用 Java EE 8 JSON-B API 而不是 Jackson。
为了匹配 Jackson 的默认行为,当 JSON 负载包含无法识别的属性时,我想拒绝将 JSON 负载反序列化为 POJO 的任何尝试。
例如,如果我有以下 JSON 数据:
{
"name": "Bob",
"extraProp": "Something"
}
Run Code Online (Sandbox Code Playgroud)
我有以下 Java 对象可以将此数据建模为:
public class Thing {
public String name;
// no mention of "extraProp"
}
Run Code Online (Sandbox Code Playgroud)
我如何拒绝将上述 JSON 数据绑定到上述 POJO 的尝试?
如果我尝试以下操作,则Thing创建的对象不会出错(这里我希望发生错误):
Jsonb jsonb = JsonbProvider.provider()
.create()
.build();
Thing t = jsonb.fromJson("{\"name\":\"Bob\",\"extraProp\":\"Something\"}", Thing .class);
Run Code Online (Sandbox Code Playgroud) 我需要一些帮助来理解Websphere Liberty(18.0.0.1)如何处理JAX-RS端点调用中抛出的异常.我正在使用Liberty功能jaxrs-2.0,因此应该由WLP提供实现.
现在,我的应用程序有一个POST HTTP端点接受JSON有效负载,我想为所有可能的错误客户端输入提供自定义错误消息.
这是一个以我预期的方式工作的案例:
application/xml而不是application/jsonClientErrorException由容器抛出ExceptionMapper<WebApplicationException>处理此异常(实际上是为了处理所有Web应用程序异常,我很好)以下是不适合我的情况:
application/json,但空体java.io.EOFException: No content to map to Object due to end of input- 是的,这看起来很准确EOFException成某种WebApplicationException(我可以轻松处理),WLP将异常问题包装成JaxRsRuntimeException这里有几点:
ExceptionMapper<JaxRsRuntimeException>因为该异常不是JAX-RS 2.0规范的一部分,我必须提供导入到JaxRsRuntimeException并将应用程序与一些Liberty特定的库连接起来.ExceptionMapper<RuntimeException>和字符串检查,如果它找到classname'JaxRsRuntimeException'的异常,然后处理它.但这对我来说似乎并不合适.那么,WLP设计是不是在这种情况下不给我一个WebApplicationException?处理这种情况的优雅解决方案是什么?
谢谢
编辑:添加了部分源代码.
REST端点和资源方法:
@Path("/books")
public class BookEndpoint {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response createBook(Book book, @Context UriInfo uriInfo) {
bookDao.create(book);
UriBuilder builder = uriInfo.getAbsolutePathBuilder();
builder.path(Integer.toString(book.getId()));
return Response.created(builder.build()).entity(book).build(); …Run Code Online (Sandbox Code Playgroud)