相关疑难解决方法(0)

Java链接器的工作原理

我想知道Java链接器的工作原理.具体来说,它将类,接口,包,方法等组合成jvm可执行格式.我在这里找到了一些信息,但关于链接顺序的信息并不多.

java linker jvm specifications

12
推荐指数
4
解决办法
1万
查看次数

Java和Mojave的强化运行时

我目前分发Java应用程序,pkgbuild在macOS上使用打包和签名

苹果最近警告开发人员:

“在即将发布的macOS版本中,Gatekeeper将需要由开发人员ID签名的软件由Apple 进行公证。”

在阅读了经过公证的文档后,苹果警告开发人员

“您必须启用强化的运行时,Apple才能对您的应用程序进行公证。”

其中详细介绍了如何在Xcode中启用这些设置。但是,那些不是用Xcode开发的应用程序呢? Xamarin / Mono对如何解决这个问题有来回回的意见,但是到目前为止,提交似乎集中在Mojave检测和C / C ++上。Java应用程序或不分发任何C / C ++ / Objective-C编译代码的应用程序呢?如何对项目进行“公证”,以便将来的macOS更新不会阻止项目?

可能相关:如何为Xcode上的第三方CLI进行代码签名并启用强化的运行时?

java security pkgbuild hardening macos-mojave

5
推荐指数
2
解决办法
1938
查看次数

如何将 JavaFX SDK 直接捆绑到输出 jar 中?

目前,我在启动程序时使用 JVM 参数来查找 JavaFX 库,如下所示:

java -javaagent:lib/aspectjweaver-1.9.5.jar -javaagent:lib/spring-instrument-5.2.3.RELEASE.jar --module-path lib/javafx-sdk-13.0.2/lib --add-modules=javafx.controls -jar target/Some_Service-1.0.jar
Run Code Online (Sandbox Code Playgroud)

我的 POM.xml 的插件部分非常简单。除了 Docker 和 Launch4j 插件之外,我只有这个:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉Maven将整个lib目录(其中包含JavaFX库和aspectJ/spring仪器java代理)捆绑在jar中?这样做可以解决在我部署应用程序的任何地方都必须携带该 lib 文件夹的问题!谢谢!

******编辑******

我搞乱了 spring boot maven 插件选项,不幸的是我的 jar 仍然不包含我的文件夹:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <folders>
            <folder>lib</folder>
        </folders>
        <agent>lib/aspectjweaver-1.9.5.jar</agent>
        <agent>lib/spring-instrument-5.2.3.RELEASE.jar</agent>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

*****编辑2*****

我刚刚发现了一个很棒的库,它完全消除了对 -javaagent 参数的需要,而是让您在运行时以编程方式加载它们。看来我的类路径中存在 AspectJ 和 Spring-Instrument 也正是它所需要的!查看: https: //github.com/subes/invesdwin-instrument

我现在需要的是以某种方式将 JavaFX 运行时捆绑到我的 jar 中,而不是使用命令行参数从外部引用它。

java spring javafx libraries maven

4
推荐指数
1
解决办法
2052
查看次数