我有一个打开文件的java应用程序.这在Windows上运行得很好,但在mac上却不行.
这里的问题是我使用Windows配置打开它.代码是:
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + file);
现在我的问题是在mac中打开它的代码是什么?或者还有另一种方法可以打开可以运行多平台的PDF吗?
编辑:
我创建了如下文件:
File folder = new File("./files");
File[] listOfFiles = folder.listFiles();
Run Code Online (Sandbox Code Playgroud)
在循环中我将它们添加到一个数组:
fileArray.add(listOfFiles[i]);
如果我尝试使用Desktop.getDesktop().open(文件)从该数组中打开一个文件,它说它找不到该文件(因为我使用'./files'作为文件夹,路径搞砸了)
是否有任何应用程序可以创建Java应用程序的本机应用程序启动器?作为"本机"术语,我的意思是"看起来像普通的,依赖于平台的应用程序,只启动java -jar foobar.jar,如果没有安装JVM则显示错误".我听说过Launch4j,但它只适用于Windows.我想要多平台(Win + Lin + Mac)解决方案.我不是在讨论shell脚本; 我想要正常的可执行文件.
顺便说一句,Eclipse看起来它有类似我想要的东西.
问候.
我目前正在从事宠物编程语言(用于学习目的),并且在过去一年中经历了大量研究,我认为现在是时候开始建模这种语言的概念了.首先,我希望它能够编译成某种中间形式,例如JVM或.NET字节码,目标是兼容多平台/架构.其次,我希望它快速(我还有许多其他的东西,但这不是讨论这些主题的目的).
我想到的最佳选择是:编译为JVM字节码并使用OpenJDK作为运行时环境,编译为.NET字节码并使用Mono作为运行时环境,编译为LLVM IR并使用LLVM作为运行时环境.
正如您可能想象的那样,我选择了LLVM.为什么?因为它的速度非常快.我使用C++ N-Body代码进行了一些基准测试,并在我的机器中使用lli jitted IR实现了7s,而使用了clang本地编译代码的27s(我知道clang首先使IR成为机器代码).
所以,这是我的问题:我可以使用LLVM基本工具集(我只需要lli)的任何可再发行版本吗?或者我必须自己编译?如果是后者,你能否提供一些关于如何做的提示?如果我真的必须这样做,我想是从我的机器(英特尔Mac)交叉编译它们,并生成一些安装程序(例如,Windows的.msi,流行的Linux发行版的.rpm和.deb以及.pkg Mac电脑).请记住,我只需要LLVM的最小子集,这样通过使用"lli",该子集就能够像VM一样工作.这里真正的问题是如何将LLVM用作典型的虚拟机.
platform-agnostic multiplatform llvm llvm-ir vm-implementation
每个关于加速器的教程都教导如何使用FROM CODE,而不是fxml文件.在那里,您将学习如何使用预定义的KeyCombinations来实现平台独立性.
现在我想知道,如果我用fxml写这个:
<MenuItem mnemonicParsing="false" text="%menu.save" >
<accelerator>
<KeyCodeCombination alt="UP" code="Z" control="UP"meta="DOWN" shift="UP" shortcut="UP" />
</accelerator>
</MenuItem>
Run Code Online (Sandbox Code Playgroud)
它应该S在Mac上APPLE + ,并且应该在Windows 上CTRL+S
这应该也适用吗?(PS:我没有Windows OS/PC)
我一直在通过在不同平台上编译来对我的应用程序进行一些测试,而从64位系统向32位系统的转变暴露了许多问题.
我大量使用向量,字符串等,因此需要对它们进行计数.但是,我的函数也使用32位无符号数,因为在很多情况下我需要显式地使用正整数.
我遇到了看似简单的任务的问题,例如std::min和std::max,这可能更系统化.请考虑以下代码:
uint32_t getmax()
{
return _vecContainer.size();
}
Run Code Online (Sandbox Code Playgroud)
看起来很简单:我知道向量不能有负数的元素,所以返回无符号整数就完全有道理了.
void setRowCol(const uint32_t &r_row; const uint32_t &r_col)
{
myContainer_t mc;
mc.row = r_row;
mc.col = r_col;
_vecContainer.push_back(mc);
}
Run Code Online (Sandbox Code Playgroud)
再次,简单.
问题:
uint32_t foo(const uint32_t &r_row)
{
return std::min(r_row, _vecContainer.size());
}
Run Code Online (Sandbox Code Playgroud)
这给了我错误,例如:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:2589:1: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('unsigned long' vs. 'unsigned int')
min(const _Tp& __a, const _Tp& __b)
Run Code Online (Sandbox Code Playgroud)
我做了很多挖掘,在一个平台上,vector :: size_type是一个8字节的数字.但是,根据设计,我使用无符号的4字节数字.这可能会导致事情变得古怪,因为您无法隐式地将8字节数转换为4字节数.
解决方案是做老式的weay:
#define MIN_M(a,b) a < b ? a : b
return …Run Code Online (Sandbox Code Playgroud) 我已经让自己不得不维护一些C项目,它也应该在旧平台上编译.目前,对于某些平台,_POSIX_C_SOURCE定义了宏.我想知道 - 如果定义它是否可以接受,我不应该只在所有平台上定义它吗?也许具有最高的相关价值?
总而言之,我想我在问:何时以及在什么条件下应该_POSIX_C_SOURCE使用?
首先,我读了一些这方面的文章,例如https://learn.microsoft.com/en-us/nuget/create-packages/supporting-multiple-target-frameworks,但它们没有涵盖我的场景以及我的任何内容尝试过没有成功。
我总共有 4 个组件,配置如下:
1. .NET Framework 4.5; Platform x86
2. .NET Framework 4.5; Platform x64
3. UWP10; Platform x86
4. UWP10; Platrofm x64
Run Code Online (Sandbox Code Playgroud)
即使是 .NET Framework,我也没有 AnyCPU 平台程序集。我的所有程序集都以 x86 或 x64 为目标。到目前为止我发现的所有内容都描述了如何仅为 UWP 创建多平台包。我什至还没有尝试过,因为这个主题已经被很好地涵盖了。问题是如何为.NET Framework 4.5打包多平台包。根据包装文章,我似乎必须具有以下文件夹结构
runtimes
win-x86
lib
net45
MyAssembly.dll
win-x64
lib
net45
MyAssembly.dll
Run Code Online (Sandbox Code Playgroud)
我创建了这个结构并尝试使用该包。该软件包安装没有错误,但我无法使用 MyAssembly.dll。看起来构建没有找到它。我尝试了文件夹名称的不同变体,例如“win10-x86”,只是“x86”。什么都不起作用。
是否有可能为 .NET Framework 4.5 提供多平台包?有没有人创建成功的?请分享知识。
谢谢
我们有一个带有构建脚本的Kotlin多平台库项目,该构建脚本使用“旧式”子项目的结构和流程为各种平台(即通用JS和JVM)构建。在此系统下,产生的工件可以成功上传到我们的Sonatype Nexus存储库(根build.gradle包含在下面的(1)中)。
现在,我们试图转换为“新型”的Kotlin多平台方法/结构(使用Gradle构建多平台项目),但是当我们尝试将工件上传到仓库(修改后的根版本)时,出现以下错误.gradle包含在以下(2)中):
BUILD FAILED in 0s
8 actionable tasks: 1 executed, 7 up-to-date
A POM cannot have multiple artifacts with the same type and classifier. Already have MavenArtifact objjson-metadata:jar.asc:asc:null, trying to add MavenArtifact objjson-metadata:jar.asc:asc:null.
10:36:52: Task execution finished 'uploadArchives'.
Run Code Online (Sandbox Code Playgroud)
有谁知道我们为什么会收到此错误?
构建期间创建的每个工件的设置似乎都需要在脚本中进行更新,但是我们不确定如何执行此操作。
提前致谢!
(1)原始(“旧式”多平台)根build.gradle:
buildscript {
ext.kotlinVersion = '1.2.61'
repositories {
jcenter()
mavenCentral()
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
classpath 'com.bmuschko:gradle-nexus-plugin:2.3.1'
}
}
plugins {
id 'io.codearte.nexus-staging' version '0.11.0'
}
allprojects {
group 'nz.salect.objJSON' …Run Code Online (Sandbox Code Playgroud) 我正在寻找有关安装程序的建议.安装程序需要支持多个操作系统 - Solaris,Linux和Windows.我有三台构建机器,每台机器运行一个OS.目前使用相同的代码库 - 三种JAVA和C/C++.
在 3d 方 APK 文件中,我注意到有不同架构的文件夹 - armv7、arm64、x86、mips - 所以一个 APK 适用于多种架构,Android 支持。
但是,我似乎没有找到用 Qt 项目做到这一点的方法。我有一个针对多个架构的项目,但我一次只能为一个架构生成一个 APK,只能为当前活动的项目工具包生成。
是否有可能为 Qt 项目生成这样的多架构 APK?