问题标签 [self-contained]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何创建自包含的 Java 应用程序?
我要做的是构建一个在 Windows 和 macOS 上都兼容的 java swing 应用程序。导出可执行 jar 文件并在另一台装有 JRE 的计算机上运行它可以完美运行,但问题在于没有它的计算机。
我想拥有它,这样我的应用程序就可以在设备上安装必要的 JRE,而无需将用户重定向到该站点进行下载并让他们单独安装它。我了解到这可以通过自包含应用程序来完成,其中包中内置了必要的 JRE,但官方文档(https://docs.oracle.com/javase/10/deploy/self-contained-application -packaging.htm#JSDPG583 )太模糊了。
据我所知,创建自包含应用程序的几种方法是修改 Ant Task fx: deploy和javapackager -deploy命令。我已经尝试过这两种方法,但每种方法都有问题。对于 Ant,尚不清楚包含该属性的文件在哪里(或如何创建它),对于 javapackager,此页面在这里:( https://docs.oracle.com/javase/8 /docs/technotes/guides/deploy/packager.html)说添加一个路径到javapackager.jar位于我的 JDK 安装的 bin 目录中;我已经将%JAVA_HOME%\bin添加到路径中,但这无济于事,因为javapackager.jar根本不存在(jre-12 是我的安装,如果有帮助的话)。
我是这种事情的新手,所以尽可能多的细节将不胜感激。
谢谢
.net-core - 自包含的 .netcore 应用程序可以在 AIX 上运行吗?
我在 Linux 上成功运行了独立的 .net-core 3 应用程序,但如果我尝试在 AIX 上运行它会失败:
bash: ./CoreConsole: cannot execute binary file: Cannot run a file that does not have a valid format.
我知道 AIX 是 unix 操作系统,但有人设法在其上运行自包含的 .net-core 应用程序吗?
java - 如何从头开始构建一个自包含的 java 程序的目录结构?
我正在用java编写我的第一个2D游戏。我正在用 Atom 编写代码。我从 Mac 上的终端编译并运行代码。游戏到目前为止运行良好!但我担心我的项目结构不正确,到时候将无法部署它。我想知道为像基于 Java 的 2D 游戏这样的项目构建目录结构的正确方法,最好是从头开始。
我搁置了游戏制作以弄清楚结构。我尝试使用 LibGDX 作为打包项目的一种方式,然后将其作为 Gradle 项目导入 Eclipse。我突然发现自己在我曾经简单的项目周围有一个巨大而不清楚的目录结构。我觉得这项任务并不比自己从头开始构建项目更简单。此外,我无法从 LibGDX 提供的这个自动生成的目录结构中运行任何简单的 java 代码,现在在 Eclipse 中。我更愿意在 Atom 中编写所有代码,并从终端编译和测试代码,必要时再次从终端创建适当的 JAR。
我决定简化手头的任务并返回 Oracle 文档,并确定我正在尝试构建的是一个自包含的 Java 应用程序。甜的!但是 Oracle 文档似乎并没有深入探讨此类项目所需的必要目录结构背后的逻辑。他们告诉您您需要的两个主要组件是应用程序的资源(即 .java 文件、图像和音频等)和 JRE 的副本,以便用户在执行时拥有玩游戏所需的一切该程序。我只是对如何使用提供的信息设置此目录结构没有信心。
我想克服这个“这一切应该如何构建?” 问题,所以我可以返回开发游戏。提前感谢您阅读并提供反馈。
c# - 如何将完整的独立 .NetCoreApp 发布为 exe?
我正在尝试发布我的 C# .NetCoreApp2.2 控制台应用程序的可用 exe 文件。
我使用 Visual Studio Code IDE 用 C# 编写了一个小应用程序。我首先在 Visual Studio Code 中键入dotnet new console
并打开项目。我安装了一些第三方库,例如 log4net 和 DocumentFormat.OpenXml。
我可以在 Visual Studio Code 中调试我的应用程序 - 没问题。我可以dotnet run
在项目源目录中运行——没问题。我也可以dotnet publish -c Release -r win10-x64 --self-contained true
毫无问题地运行。
在发布命令之后,我在预期的子目录中获得了预期的 .exe 文件(以及许多其他文件?)。
现在问题来了:一旦我尝试执行 .exe 文件,我就会得到一个未处理的期望。
我确实引用了第三方库,但据我了解,自包含选项应该注意这一点 - 是吗?
我用谷歌搜索并看到了一些描述发布过程的结果,这些结果在谈论project.json
我没有的文件。人们还描述该文件将使用给定的 dotnet-command 创建。对我来说,它永远不会使用该命令创建 - 要设置任何其他标志吗?
这是我的 .csproj 文件
版本的“*”可能有问题吗?
我希望获得一个 .exe 文件(可能很大),该文件执行并显示与我dotnet run
在项目的源目录中使用命令获得的相同的输出。
有任何想法吗?
node.js - 寻找一种将节点应用程序打包到作为 Windows 服务运行的独立 Windows 可执行文件的方法
我需要将 node.js 服务器应用程序作为一个独立的可执行文件运行,它应该是一个 Windows 服务。有几个库创建了一个独立的可执行文件,或者在 node.js 中实现了一个 Windows 服务层,但不创建一个独立的可执行文件,它本身就是一个 Windows 服务。
要求是:
- node.js 服务器应用程序应部署为 Windows 服务(自包含,win-exe,目标机器上不安装节点)
- Windows 服务应该能够使用 node.js 服务器应用程序的参数(例如 TCP 端口号或 node_env)
- 如果可以将某些文件存储在 node.js 服务器应用程序中使用的服务旁边,那就太好了(例如 SSL 证书)
有谁知道开源工具,库或某事。还有哪些满足这些要求并且维护得很好(仍然支持/开发,没有关键的旧问题等)?
asp.net - “自包含”核心部署 (asp net) 中缺少 DLL
我的印象是独立的核心部署附带了构建/发布所需的一切,但我已将发布文件夹的内容发送到目标环境,但出现以下错误:
找不到应用程序依赖项清单中指定的程序集:包:'Microsoft.AspNet'WebApi.Client',版本:'5.2.6' 路径:'lib/netstandard2.0/System.Net.Http.Formatting.dll'
我已尝试将以下属性添加到项目 XML,但我仍然无法在发布目录中看到该 DLL:
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
为了清楚起见,我尝试从发布目录和 winx64 目录(我惊讶地发现它的大小要小得多?)
我知道这里的解决方案之一可能是确保我在目标环境上安装框架/依赖项,但我真的想避免这样做,因为我希望这个应用程序真正独立。
项目 XML:
发布设置:
.net-core - 如何通过管道 UI 将自包含的 dotnet 核心包发布到 azure 工件?
我已经使用 dotnet core 创建了一个应用程序。我将它构建为一个独立的包。我正在尝试使用管道 UI 将其发布到 Azure 工件服务器。我已经能够成功构建自包含包,并且能够成功将其发布到 drop。我无法弄清楚如何获取 NuGet 包命令(以及后续的 Nuget 推送)来获取独立包以作为可下载包放置在工件服务器上。
这是我的发布任务的 YAML:
这是复制以构建登台的任务的 YAML:
您的构建管道引用“BuildConfiguration”变量,您已选择该变量可在排队时设置。为此 YAML 文件创建或编辑构建管道,在“变量”选项卡上定义变量,然后选择选项以使其在排队时可设置。请参阅https://go.microsoft.com/fwlink/?linkid=865971
在复制步骤中,日志表明完整的独立包确实被复制到“\src\TelemetryReceiver\bin\Release\netcoreapp2.2\win-x64”。但是最后一个包是从工件服务器下载的,它只是拾取“netcoreapp2.2”目录的内容。
当然,我对“dotnet publish”和“NuGet pack”任务应该如何关联感到困惑。似乎两者都独立评估.csproj
文件,就是这样。
c# - 在修剪的独立部署中定位包含的组件
我正在学习 C# 和它的相关堆栈,并尝试构建修剪后的自包含可执行文件。问题在于某些程序集没有被直接引用,并且暗示要通过托管可扩展性框架使用,因此修剪器不会将它们视为已使用。我使用<TrimmerRootAssembly Include="x"/>
) 将它们包含在 scd 中,但它们对代码“不可见”,即使它们在项目中被引用。这是我的csproj:
Ayte.Tool.Toolkit.Handler.Toolkit
已成功包含在 SCD 中并且可由我的应用程序访问:
但是如果不直接使用程序集类/显式按名称加载,它就不会出现在AppDomain.CurrentDomain.GetAssemblies()
or中Assembly.GetExecutingAssembly().GetReferencedAssemblies()
:
如何获取包含在 SCD 中的所有程序集的列表以急切地加载它们?任何通过名称、类负载或其他任何直接引用都会破坏整个 MEF 概念,因此我不想以任何手动方法进行。
c# - dotnet core 3.x PublishSingleFile:临时文件被删除
我们将应用程序作为独立的 dotnet core 3.1 单个可执行文件提供。该 exe 在各种 Windows 服务器上作为服务运行:
- 服务器 2012 64 位
- 服务器 2016 64 位
- 服务器 2019 64 位
运行一段时间(一周及以上)后,由于临时目录中缺少AppName.deps.json文件,服务无法重新启动:
通过检查目录,我们可以看到缺少更多的 .json 和 .dll 文件。我猜文件系统清理会删除服务运行时未使用的所有文件。
删除整个临时目录可以解决问题,因为 exe 将在启动时再次提取。问题似乎是这样的事实,只有一些文件被删除并且内容没有被再次提取。
我们首选的解决方案是将文件提取到临时目录之外的目录中。到目前为止,我们还没有找到可以提供此功能的选项。也欢迎任何其他避免删除临时文件的想法。如果可能,我们希望继续使用单个可执行文件,因为这使得将应用程序交付给我们的客户更加舒适。
编辑:这是从 .csproj 发布的当前 PropertyGroup: