当前位置: 首页 > 面试题库 >

如何修复JNLP应用程序中的“缺少代码库,权限和应用程序名称清单属性”?

爱茂勋
2023-03-14
问题内容

随着最新的Java更新,很多人都与他们的Java Web
Start的麻烦应用缺乏CodebasePermissionsApplication- name清单属性。尽管有足够的资源来帮助您完成此任务,但是我找不到关于该问题的 全面 解答,所以我觉得“问答”会很好。所以,这是一个问题:

我的Java Web Start应用程序在控制台中显示以下警告:

Missing Permissions manifest attribute for: http://www.codebase.com/myApp/dist/myApp.jar
Missing Codebase manifest attribute for: http://www.codebase.com/myApp/dist/myApp.jar
Missing Application-Name manifest attribute for: http://www.codebase.com/myApp/dist/myApp.jar

我该如何解决?


问题答案:

(1) 首先,您需要创建一个具有所有要添加属性的文本文件。我的文本文件如下所示:

Permissions: all-permissions
Codebase: http://www.codebase.com/myApp/dist
Application-Name: My Application

我命名了addToManifest.txt。显然,您需要更改参数以满足您的应用程序需求。

(2) 接下来,您需要将此添加到主.jar以及所有库中。为此的命令是:

jar ufm dist\myApp.jar addToManifest.txt

当然dist\myApp.jar,您需要指向您的主要.jar文件。您还需要对所有库都执行此操作。

jar ufm dist\lib\jcommon-1.0.16.jar addToManifest.txt
jar ufm dist\lib\jfreechart-1.0.13.jar addToManifest.txt
jar ufm dist\lib\joda-time-2.2.jar addToManifest.txt
...

(注意:在Windows上,我为此编写了一个.bat文件。)

完成此操作后,应将属性写入.jars。您可以在zip管理器(如7-Zip)中打开.jars,解压缩MANIFEST.MF文件,然后在文本编辑器中打开它,然后应该看到列出的属性。

(3) 添加属性后,您需要退出应用程序。执行此操作的命令是:

jarsigner dist\myApp.jar -keystore "C:\myApp\KEYSTORE.ks" alias -storepass password

您还需要对所有库都执行此操作:

jarsigner dist\lib\jcommon-1.0.16.jar -keystore "C:\myApp\KEYSTORE.ks" alias -storepass password
jarsigner dist\lib\jfreechart-1.0.13.jar -keystore "C:\myApp\KEYSTORE.ks" alias -storepass password
jarsigner dist\lib\joda-time-2.2.jar -keystore "C:\myApp\KEYSTORE.ks" alias -storepass password

之后,应添加您的属性,并应对您.jar的签名!

注意:除非更改库结构,否则只需签名/部署库一次。即,如果您要更新应用程序,但是库的清单已被更改,正确签名和部署,则除非您要从应用程序中添加/删除库,否则无需辞职/部署库。

注意#2:当前版本的Netbeans 仅*主.jar
添加属性CodebasePermissions清单属性,而不向库添加属性。如果您使用Netbeans,则当您尝试添加重复的清单属性时,将从实用程序收到警告。队列中有一个错误报告,具有此固定的https://netbeans.org/bugzilla/show_bug.cgi?id=234231。


* jar

编辑:Netbeans的(8.0)的最新版本现在增加了三个(CodebasePermissions,和Application- Name)的清单给你。



 类似资料:
  • 我想知道一个应用程序的包名,我只知道那个应用程序的应用程序名。假设我想知道一个电子邮件应用程序的包名,只是它的名字,然后如何得到它 我只知道应用程序名。 这是代码,以获得所有的应用程序的包名称,但我需要知道特定的应用程序。

  • 嗨,我想从应用程序中读取值。财产。我发现这应该是可行的: 但我的数据源值为null。 我的应用程序上下文。xml如下所示: 有人能告诉我哪里有问题吗?

  • Maven JavaFx项目编译但从控制台运行时给出“缺少JavaFx应用程序类”错误消息 上面的方法是“创建一个新的主类,并调用扩展应用程序的类的主方法”。 然而,我仍然面临以下问题: 2.java--module-path“c:\program files\java\javafx-sdk-11.0.2\lib”--add-modules=javafx.controls,javafx.fxml,

  • 嗨,我正在探索关于azure active Directory的一些身份验证和授权流。我以前在单页应用程序中使用誓言隐式流。在阅读microsoft文档之后,我已经理解了关于隐式流的以下内容。 隐式流: 单页javacript应用程序使用隐式流从azure active Directory获得获取访问令牌。它直接调用令牌endpoint来获取令牌,因此这使得隐式流不太安全。 NET Web应用程序

  • 与普通应用程序相比,Android adb shell具有额外的权限。例如,它可以访问所有或大多数/proc子目录。如何像普通应用程序一样使用权限运行shell?

  • 我试着建立我的应用程序,但它错误的像这样 清单合并失败:[com.android.support:support-compat:28.0.0]AndroidManifest.xml:22:18-91中的属性application@AppComponentFactory value=(Android.support.v4.app.CoreComponentFactory)也出现在[AndroidX.