我正在尝试做一些应该是微不足道的事情,但我面临着一个问题。
将 JavaFx 应用程序从 Java 8 迁移到 Java 11 后,充气城堡安全提供程序将不会加载(也尝试了 Java 12,结果相同)。这是我更新为使用 Java 11 兼容插件的 Maven 项目。它编译得很好,但是在运行时我在终端窗口中得到了这个:
jar .Launcher java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at javafx.graphics/com.sun。 javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464) 在 javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl。 invoke0(Native Method) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 java。base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:567) at java.base/sun.launcher.LauncherHelper$ FXHelper.main(LauncherHelper.java:1051) 由:java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider at .Launcher.main(Launcher.java:14) ... 11 引起:java.lang.ClassNotFoundException:org.bouncycastle.jce。 provider.BouncyCastleProvider 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 在 java。 base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 12 更多
在我的 java.security 中,我将充气城堡提供者作为第一个提供者(也尝试将其作为最后一个提供者,但结果相同)
#
# List of providers and their preference orders (see above):
# …Run Code Online (Sandbox Code Playgroud) 我使用Samsung Pass SDK(1.20)来验证拥有带指纹扫描仪的Samsung Android设备的用户.我需要让用户输入他/她的密码作为指纹扫描的替代方法(与Android锁屏相同).
在运行Android 5的三星设备中 - 它运行正常.该对话框显示一个带有"备份密码"文本的按钮,用户可以输入密码进行身份验证,但在Android 6.0及更高版本中 - 它不起作用.
使用该函数isFeatureEnabled(DEVICE_FINGERPRINT_AVAILABLE_PASSWORD)返回false.
看起来三星已在Android 6设备中禁用此功能.我在文档中找不到任何关于此的内容.
这有什么理由吗?更重要的是,有没有任何解决方法(当然不是黑客)?
谢谢!
我正在编写 Android Studio Gradle 插件,我需要做的事情之一是迭代项目并检测它们是否属于 Android 应用程序或库类型(或非 Android 项目,如通用 java 库)。
我尝试使用以下代码,但它无法正常工作(检测应用程序但不检测库):
import com.android.build.gradle.AppPlugin
import com.android.build.gradle.LibraryPlugin
...
public void getVariants(){
...
def hasApp = p.plugins.withType(AppPlugin)
def hasLib = p.plugins.withType(LibraryPlugin)
...
}
Run Code Online (Sandbox Code Playgroud)
Groovy 脚本中是否还有其他正确的方法来检测项目是否属于类型库?
我需要从复杂的Json结构中删除双引号(带有子对象的对象和层次结构中的数组).我用Java编写(该应用程序将在Android上运行).
我已经有了从Json lib(Gson)生成的字符串,我试图使用正则表达式去除双引号,而不是将其反序列化回一个对象,然后在没有键名称中的双引号的情况下序列化它.
我无法找到合适的图案来替换它们.
示例Json:
{
"key1":"value1",
"key2":"555f9ecd-2ced-42b7-b956-33e759bf8db1",
"key3":false,
"key4_parent":{
"child_key5":"Android",
"id":"7ae2facc-cdb3-7ae2-facccdb3bb86",
"name":"danny",
"bypassed":false
},
"object1":{
"deviceType":"Android",
"id":"7ae2facc-cdb3-7ae2-facccdb3bb86",
"base64val":"MENPSENJTFpZQzR3b1lvU1pQZTk=",
"name":"john"
},
"requiredLevel":"PUSH",
"level":"debug",
"status":1012,
"description":"Authentication in progress",
"objects":[
{
"deviceType":"Android",
"id":"7ae2facc-cdb3-7ae2-facccdb3bb86",
"base64val":"MENPSENJTFpZQzR3b1lvU1pQZTk=",
"name":"john"
},
{
"deviceType":"Android",
"id":"7ae2facc-cdb3-7ae2-facccdb3bb86",
"base64val":"MENPSENJTFpZQzR3b1lvU1pQZTk=",
"name":"john"
}
]
}
Run Code Online (Sandbox Code Playgroud)
预期产量:
{
key1:"value1",
key2:"555f9ecd-2ced-42b7-b956-33e759bf8db1",
key3:false,
key4_parent:{
child_key5:"Android",
id:"7ae2facc-cdb3-7ae2-facccdb3bb86",
name:"danny",
bypassed:false
},
object1:{
deviceType:"Android",
id:"7ae2facc-cdb3-7ae2-facccdb3bb86",
base64val:"MENPSENJTFpZQzR3b1lvU1pQZTk=",
name:"john"
},
requiredLevel:"PUSH",
level:"debug",
status:1012,
description:"Authentication in progress",
objects:[
{
deviceType:"Android",
id:"7ae2facc-cdb3-7ae2-facccdb3bb86",
base64val:"MENPSENJTFpZQzR3b1lvU1pQZTk=",
name:"john"
},
{
deviceType:"Android",
id:"7ae2facc-cdb3-7ae2-facccdb3bb86",
base64val:"MENPSENJTFpZQzR3b1lvU1pQZTk=",
name:"john"
}
]
} …Run Code Online (Sandbox Code Playgroud) 我正在将我的 Maven JavaFX 应用程序从 Java 8 迁移到 Java 11。我将 pom.xml 中的插件更新为最新的(兼容 Java 11 的)插件。编译运行良好,在“目标”文件夹下的正确目录中为我提供了 jar 以及所有依赖项和模块,但是当我尝试运行 jar 文件时,我收到了可怕的“缺少 JavaFX 应用程序类”错误。无论我如何尝试更改插件配置 - 我总是收到此错误消息,并且应用程序将无法运行。
现在,更多发现: 1. 主类确实位于类下的正确文件夹和 jar 中。2. Manifest 文件位于正确的位置,并且包含主类属性(在 Java 8 下工作正常)。
这是相关部分
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>11</source>
<release>11</release>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
<compilerVersion>11</compilerVersion>
</configuration>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>7.0</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>false</addClasspath>
<mainClass>${mainClass}</mainClass>
</manifest>
<manifestEntries>
<JavaFX-Application-Class>${mainClass}</JavaFX-Application-Class>
</manifestEntries>
</archive>
<outputDirectory>${project.build.directory}/libs</outputDirectory>
</configuration>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>copy-libs</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/libs</outputDirectory>
<includeScope>runtime</includeScope>
<excludeGroupIds>org.openjfx</excludeGroupIds> …Run Code Online (Sandbox Code Playgroud) java ×3
android ×2
java-11 ×2
maven ×2
bouncycastle ×1
fingerprint ×1
groovy ×1
javafx ×1
maven-3 ×1
regex ×1