- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 Eclipse 中开发 JavaFX 应用程序。该应用程序具有外部库,如 log4j 和其他库,并且可以从 Eclipse 完美运行。我已经尝试通过 Eclipse 内置功能将它作为 Runnable jar 从 Eclipse 部署,并且它在某些计算机上运行良好,而在其他计算机上它会给我一个模糊的未定义链接错误。仔细研究之后,JavaFX 似乎需要通过 ANT 脚本或 javafxpackager
应用程序进行特殊打包。
对于我来说,我似乎无法通过这两种方法中的任何一种来部署可运行的 jar。尝试这两种方法中的任何一种,我都会得到一个异常。我尝试过的事情:
通过 ANT 脚本构建 JavaFX 应用程序,下面是构建脚本相关部分的片段
<path id="classpath">
<fileset dir="${lib.dir}" includes="**/*.jar"/>
<fileset dir="${javafx.sdk.path}/jre/lib" includes="jfxrt.jar"/>
</path>
<target name="compile" depends="clean">
<echo>Compiling the source</echo>
<mkdir dir="${classes.dir}"/>
<!-- Copy over the misc files into the classes dir -->
<copy todir="${classes.dir}/bundles">
<fileset dir="${src.dir}/bundles"/>
</copy>
<copy todir="${classes.dir}/css">
<fileset dir="${src.dir}/css"/>
</copy>
<copy todir="${classes.dir}/img">
<fileset dir="${src.dir}/img"/>
</copy>
<copy todir="${classes.dir}/views">
<fileset dir="${src.dir}/views"/>
</copy>
<copy todir="${classes.dir}/bundles">
<fileset dir="${src.dir}/bundles"/>
</copy>
<copy file="${src.dir}/log4j2.xml" todir="${classes.dir}"/>
<javac target="1.7" srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath" debug="on">
</javac>
</target>
<target name="jar" depends="compile">
<echo>Creating the main jar file</echo>
<mkdir dir="${distro.dir}" />
<fx:jar destfile="${distro.dir}/main.jar" verbose="true">
<fx:platform javafx="2.1+" j2se="7.0"/>
<fx:application mainClass="${main.class}"/>
<!-- What to include into result jar file?
Everything in the build tree-->
<fileset dir="${classes.dir}"/>
<!-- Define what auxilary resources are needed
These files will go into the manifest file,
where the classpath is defined -->
<fx:resources>
<fx:fileset dir="${distro.dir}" includes="main.jar"/>
<fx:fileset dir="." includes="${lib.dir}/**" type="jar"/>
<fx:fileset dir="." includes="."/>
</fx:resources>
<!-- Make some updates to the Manifest file -->
<manifest>
<attribute name="Implementation-Vendor" value="${app.vendor}"/>
<attribute name="Implementation-Title" value="${app.name}"/>
<attribute name="Class-Path" value="${lib.dir}"/>
<attribute name="Implementation-Version" value="1.0"/>
</manifest>
</fx:jar>
</target>
通过 ant 脚本编译/生成 jar,我在控制台中弹出了半秒钟的窗口和“应用程序启动方法中的异常”,没有堆栈跟踪。我已经尝试使用 -XX:-OmitStackTraceInFastThrow
标志运行 java,但它仍然不会给我堆栈跟踪。
运行 javafxpackager
会出现以下错误:
RenderJob.run:内部异常java.lang.UnsatisfiedLinkError: com.sun.prism.d3d.D3DContext.nSetBlendEnabled(JZZ)I 在 com.sun.prism.d3d.D3DContext.nSetBlendEnabled( native 方法) 在 com.sun.prism.d3d.D3DContext.initState(D3DContext.java:84) 在 com.sun.prism.d3d.D3DResourceFactory.(D3DResourceFactory.java:57) 在 com.sun.prism.d3d.D3DPipeline.createResourceFactory(D3DPipeline.java:147) 在 com.sun.prism.d3d.D3DPipeline.getD3DResourceFactory(D3DPipeline.java:153) 在 com.sun.prism.d3d.D3DPipeline.findDefaultResourceFactory(D3DPipeline。 java :179) 在 com.sun.prism.d3d.D3DPipeline.getDefaultResourceFactory(D3DPipeline.j阿瓦:201) 在 com.sun.prism.GraphicsPipeline.getDefaultResourceFactory(GraphicsPipe线.java:97) 在 com.sun.javafx.tk.quantum.QuantumRenderer$3.run(QuantumRenderer.java:143) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 在 java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) 在 com.sun.prism.render.RenderJob.run(RenderJob.java:37) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. java :1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:98) 在 java.lang.Thread.run(Thread.java:724)
最佳答案
您可以使用 javafxpackager
部署您的应用程序。如果您部署一个独立应用程序,Java 运行时环境将与您的应用程序捆绑在一起,并且无论是否安装了正确版本的 Java,它都可以在任何机器上运行。(您应该在 bin 文件夹下的 jdk 目录中有 javafxpackager
。)
在您的 eclipse 工作区文件夹中查找编译后的文件 (.class
)。它们应该在 bin 目录中。
创建一个createjar
文件夹,并在其中创建一个classes
和一个out
文件夹。将所有 .class 文件复制到 classes
文件夹中。还将您的应用程序所需的所有 jar 包含在类文件夹中。
现在在命令行上进入 createjar
目录并运行此命令:
"C:\path\to\jdk\jdk1.7.0_25\bin\javafxpackager.exe"-createjar -appclass package.MainClass -srcdir classes -outdir out -outfile NameOfYourJar -classpath ""-v
这应该在 out
目录 中创建一个可运行的 jar。下一步将需要它。
现在在 createjar
文件夹旁边创建一个 deploy
文件夹。
在 deploy
文件夹中创建其他目录 dist
和 packages
。
在 dist
文件夹中,复制上面新创建的 jar 以及它需要的所有依赖项/资源。
返回命令行(如果您曾经离开过它)并进入 deploy
目录。从那里运行以下命令:
"C:\path\to\jdk\jdk1.7.0_25\bin\javafxpackager.exe" -deploy -native -outdir packages -outfile NameOfYourApp -srcdir dist -srcfiles NameOfYourJar.jar -appclass package.MainClass -name "Name of You Application" -title "Title of your application"
一旦完成,它应该已经创建了部署应用程序所需的一切,包括在 Windows 平台上运行的原生 .exe
文件。这是独立的应用程序!为了能够运行它,您需要进入 bundles\NameOfYourApp\app
并将您的应用程序需要的所有依赖项/资源粘贴到此处。
最后,双击 YourApp.exe,它甚至可以在没有安装 Java 的机器上运行。
关于deployment - 无法在 JAR 中使用外部库部署 JavaFX 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18815835/
我是 DevOps 的新手。我为刚刚在 Digital Oceans 上创建的 Kubernetes 集群编写了一个 deployment.yaml 文件。创建部署不断出现我现在无法解码的错误。这只是
我需要能够在 Red5 运行时进行部署。我知道的唯一解决方案是使用 WAR 文件并将其放在文件夹中:webapp。 还有其他办法吗? 我使用的是 Red 5 v0.8。我使用 Eclipse 3.4
我收到以下错误: Recycling (Waiting for role to start... Sites are being deployed. [2012-12-17T05:30:10Z]) R
使用 TeamCity 6.5,我试图弄清楚如果可能的话,如何为特定的构建运行设置手动部署。 我希望能够做的是运行已经构建和测试的 TeamCity(仅需要部署工件 - 这不是 Web 应用程序或站点
我看到一个范围为环境的编辑变量权限。但是,似乎谁负责设置项目,谁就会负责创建变量,而其他一些安全实体将只负责修改值,特别是安全值。这可能吗? 编辑:再补充一点,我想我是在根据项目变量集请求权限。只有拥
在我通过命令部署到我的服务器后: bin/dep deploy 在“releases ”文件夹中,我有名为喜欢的文件夹 1 , 2 , 3 , ... 我怎样才能把它改成时间戳,所以在部署命令之后我会
问题: 我有一个手动干预步骤,其中包含执行部署的人员要遵循的文本步骤。 我想传递目标服务器的名称,这样这个人就不需要查找目标服务器名称。 例如,如下所示,我需要将它们解压缩到目标服务器上的某个位置。
这是一个系统 Octopus 部署变量: #{Octopus.Action[Deploy To Server].Output.Package.InstallationDirectoryPath} 文本
我正在尝试在 Octopus Deploy 中设置部署。与许多其他开发人员一样,我通过迭代来做到这一点:调整步骤/脚本/包 -> 单击“部署” -> 检查结果 -> 如果不满意,则重新开始。在 Oct
在使用 Network Deployment 安装 WebSphere Application Server 时,节点是: 物理机 操作系统实例 一组独立于物理机或操作系统实例的逻辑 WAS 实例 最
我知道目前有一个 feature request对于这样的事情,但我希望使用当前版本(1.6)有某种解决方法 我们从 TFS 中的开发分支为我们的开发和测试环境构建,并从 TFS 中的发布分支为我们的
我正在尝试运行由 MSBuild 生成的 ProjectName.deply.cmd 当参数 /p:DeployOnBuild=True通过。参数“ComputerName”之一将作为 https:/
有时首选和/或需要在单个服务器上托管数十个应用程序。不是说这是“对”或“错”,我只是说它发生了。 此配置的缺点是出现错误消息Waiting for the script in task [TASK I
部署准备使用的 erlang 应用程序时我 不要希望用户 在上找到正确的 erl 版本 互联网。 安装 erl vm 解压缩并确定梁文件的位置(与应用程序一起) 阅读自述文件 修改任何看起来像配置文件
使用Next.js创建的app部署到netlify时,出现如下错误,部署失败。 ────────────────────────────────────────────────────────────
我有一个包含两个模块的项目:客户端和服务器。在父 pom.xml 中,我添加了部署阶段的信息,以便部署到本地目录: 4.0.0 org.my myTest 0.1 pom m
我们正在运行 OD 1.6。 我想使用 OD 变量来更改不在应用设置部分中的值,例如 session 状态提供程序。 我知道我可以为此使用转换,但作为一家公司,我们更喜欢使用 OD 变量而不是转换,因
Plesk Obsidian 提供 GIT 部署,我们正在尝试将其配置为类似于我们之前在 CPANEL 上的配置(我们最近从与 CPANEL 的共享帐户升级到与 Plesk 的 VPS - Plesk
我对这个主题进行了大量研究,但找不到任何端到端解决方案来使用 TFS 2010 实现“一次构建并部署多次”。 基本上我在想的是有一个构建定义,它将构建一个解决方案,其中包含多个要部署的项目(Web 应
我已经阅读了关于如何使用 pm2 的几个问题和想法。在 Windows 机器下,不管你信不信,我以前的机器运行得很好......然后我不得不重新格式化它并完全忘记了我以前做过的事情:( 我已经安装了
我是一名优秀的程序员,十分优秀!