相关疑难解决方法(0)

正确修复Java 10抱怨jaxb-impl 2.3.0的非法反射访问?

我们正在考虑将一些遗留代码升级到Java 10.由于JAXB默认不可见(编辑:正确的长期解决方案不是使用各种JVM标志来规避症状,而是正确修复它)我已将此片段添加到我的pom.xml:

    <!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.3.0</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

不幸的是,在stderr启动时仍然会出现警告.显然这不是正确的解决方法.

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.sun.xml.bind.v2.runtime.reflect.opt.Injector (file:/home/tra/.m2/repository/com/sun/xml/bind/jaxb-impl/2.3.0/jaxb-impl-2.3.0.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int)
WARNING: Please consider reporting this to the maintainers of com.sun.xml.bind.v2.runtime.reflect.opt.Injector
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Run Code Online (Sandbox Code Playgroud)

完整的输出--illegal-access=debug是:

WARNING: Illegal …
Run Code Online (Sandbox Code Playgroud)

java jaxb maven java-10

36
推荐指数
3
解决办法
8850
查看次数

Flutter.io Android许可证状态未知

[!] Android工具链 - 针对Android设备开发(Android SDK 27.0.3)

•Android SDK a ..\Android\sdk•未配置Android NDK位置(可选;对本机分析支持很有用)•平台android-27,构建工具27.0.3•Java二进制文件:C:\ Program Files\Android\Android Studio\jre\bin\java•Java版OpenJDK运行时环境(版本1.8.0_152-release-1024-b02)X And​​roid许可证状态未知.

当我运行Flutter医生时,我收到了Android Sdk的错误,尽管我仍然可以在我的设备上构建/运行.我只是想知道如何解决这个问题.我相信我已经下载了最新版本的android sdk,不知道发生了什么,因为我上周没有这个问题.

新问题

在评论中遵循几个可能的修复后,它导致了一个新问题.我安装了较新版本的android sdk P,8和7以及一个新的jdk10.显然仍然没有足够的更新.

C:\Flutter\flutter>flutter doctor --android-licenses
A newer version of the Android SDK is required. To update, run:
C:\Users\tdmil\AppData\Local\Android\sdk\tools\bin\sdkmanager --update
Run Code Online (Sandbox Code Playgroud)

C:\ Flutter\flutter> C:\ users\username\appdata\local\android\sdk\tools\bin\sdkmanager.bat --update

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
        at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
        at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
        at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
        at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
        at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
        ... 5 more
Run Code Online (Sandbox Code Playgroud)

android flutter

32
推荐指数
10
解决办法
3万
查看次数

从Message Digest获取MD5字符串

我理解它是如何工作的但如果我想将MD5打印成String我该怎么做?

public static void getMD5(String fileName) throws Exception{
    InputStream input =  new FileInputStream(fileName);
    byte[] buffer = new byte[1024];

    MessageDigest hash = MessageDigest.getInstance("MD5");
    int read;
    do {
        read = input.read(buffer);
        if (read > 0) {
            hash.update(buffer, 0, read);
        }
    } while (read != -1);
    input.close();
}
Run Code Online (Sandbox Code Playgroud)

java message md5 digest

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

jaxb-impl 和 jaxb-runtime 之间有什么区别?

显然,com.sun.xml.bind:jaxb-impl 工件在 Maven 存储库中被标记为“JAXB 运行时模块”(请参阅​​下面的链接),但这两个工件仍在发布新版本:

https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-runtime https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl

这个答案在我的 Maven 项目中,哪些工件应该用于 JAXB RI? 没有阐明差异。

上述问题和这一问题的公认答案如何解决 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException 的结论是,对于 Java 9+,您应该使用: org.glassfish.jaxb:jaxb-runtime

但我有使用 com.sun.xml.bind:jaxb-impl 的代码,它似乎工作正常。那么,迁移到 jaxb-runtime 会带来什么损失或收益呢?

即使是最新版本(我撰写本文时为 3.0.2)也可用于“旧”jaxb-impl 模块。如果 Oracle 不再这样做,那么谁制作了 com.sun.xml.bind:jaxb-impl 工件?它是做什么用的?为什么它不与 jaxb-runtime 共享 Maven 组坐标?

是否有任何中心位置可以清楚地记录 JAXB 的当前状况?

现在 JAXB 存在很多混乱。

PS 我暂时需要保持与 Java 8 的兼容性 - 所以我还不能使用 3.x,而 2.4.x 似乎是一次放弃的尝试,旨在修复他们在分离出来时愚蠢地破坏的模块化性。 JDK。

java jaxb

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

在将构建路径切换到JDK 10之后,Eclipse无法找到与XML相关的类

我正在开发Eclipse中的Maven项目(branch platform-b​​om_brussels-sr7).当我最近尝试切换Java构建路径,为项目JDK 10,Eclipse构建再也找不到类,如javax.xml.xpath.XPath,org.w3c.dom.Documentorg.xml.sax.SAXException.似乎只有XML相关的类受到影响,主要来自Maven依赖xml-apis-1.4.01.

从Eclipse中尝试Maven构建工作没有错误.Ctrl-LeftClick上一个假定缺失的类找到该类并在Eclipse编辑器中打开它.似乎只有Eclipse构建受到影响.

我尝试了几件事,但都没有帮助.我试过了:

  • 项目清洁
  • 不同的Eclipse版本:氧气和光子.
  • 使用JDK 8和JDK 10运行Eclipse本身.
  • 更改项目的编译器合规性级别.它在JDK 8构建路径下以符合级别8和10构建,并且在构建路径中使用JDK 10都失败.

java eclipse maven java-10

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

找不到媒体类型= application/json的MessageBodyReader

我写了一个JAX-RS服务器,客户端都使用Jersey.我想将我的实体集合发送给客户端,我做了以下步骤:

  1. Made实体扩展了Serializable
  2. 写了一个自定义提供程序并将其扩展为支持集合
  3. 将实体和提供者复制粘贴到客户端

我发出请求,它在服务器端成功处理客户端收到错误:

org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyReader not found for media type=application/json, type=interface java.util.List, genericType=java.util.List<model.HotelsEntity>.
org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:225)
org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:149)
org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1124)
org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:853)
org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:812)
org.glassfish.jersey.client.ClientResponse.readEntity(ClientResponse.java:377)
org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:813)
org.glassfish.jersey.client.JerseyInvocation.access$600(JerseyInvocation.java:90)
org.glassfish.jersey.client.JerseyInvocation$3.call(JerseyInvocation.java:693)
org.glassfish.jersey.internal.Errors.process(Errors.java:315)
org.glassfish.jersey.internal.Errors.process(Errors.java:297)
org.glassfish.jersey.internal.Errors.process(Errors.java:228)
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:424)
org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:689)
org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:405)
org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:301)
service.HotelService.getHotels(HotelService.java:30)
actions.HotelAction.perform(HotelAction.java:42)
MainServlet.processResponse(MainServlet.java:33)
MainServlet.doPost(MainServlet.java:22)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
Run Code Online (Sandbox Code Playgroud)

服务器:

    @GET
@Produces(MediaType.APPLICATION_JSON)
public Response getHotelsList(@QueryParam("startDate") String startDate,
                              @QueryParam("endDate") String endDate) {
    List<HotelsEntity> list = hotelService.getAll();
    return ResponseFactory.response(Response.Status.OK, list);
}
Run Code Online (Sandbox Code Playgroud)

客户:

    GenericType<List<HotelsEntity>> genericType = new GenericType<List<HotelsEntity>>(){};
    WebTarget target = client.target(preparePath());
    List<HotelsEntity> hotels = target.request(MediaType.APPLICATION_JSON_TYPE).get(genericType);
Run Code Online (Sandbox Code Playgroud)

提供者:

public class JsonProvider<T> implements MessageBodyReader<T>, MessageBodyWriter<T> {

@Override …
Run Code Online (Sandbox Code Playgroud)

java json jax-rs jersey

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

--add-modules仅用于编译

我正在使用maven和构建我的项目.我在我的pom.xml文件中添加了:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>${maven-compiler-plugin.version}</version>
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
        <compilerArgs>
            <arg>--add-modules</arg>
            <arg>java.xml.bind</arg>
        </compilerArgs>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

但是,为了运行应用程序,我必须像这样运行它:

java -jar --add-modules java.xml.bind my-app.jar
Run Code Online (Sandbox Code Playgroud)

有没有办法构建应用程序,从命令行运行而不是--add-modules java.xml.bindjava命令行参数?

java jaxb maven maven-compiler-plugin java-9

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

Android SDK管理器使用Java 9抛出异常

sdk-tools-darwin-4333796 (26.1.1)在运行时使用Java 9 sdkmanager抛出:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
        at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
        at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
        at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
        at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
        at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
        ... 5 more
Run Code Online (Sandbox Code Playgroud)

java android android-sdk-tools java-9

22
推荐指数
1
解决办法
9384
查看次数

将Java Date转换为XML Date Format(反之亦然)

有没有一种简单的方法将Java Date转换为XML日期字符串格式,反之亦然?

干杯,

Andez

java xml string date

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

如何表达maven对Java ee功能的依赖以转换到Java 9?

我们使用maven并拥有依赖于其他内部工件的工件.我正在迁移到,并且打算首先将所有内容迁移到Java 9而不模块化代码(即在未命名的模块中).

我遇到的问题是我们依赖java.xml.bind,现在不包含在默认模块中.是否有一种"正确"的方式来表达对java.xml.bindMaven的依赖?

java jaxb maven java-platform-module-system java-9

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