I downloaded the latest version of JavaFX from the Gluon website and extracted the zipped SDK. As well as the /lib directory that stores the jars I also see a /bin directory packed full with various dlls. If I build a Java/JavaFX application and bundle it using Maven then do I need to also bundle these dlls? And if so, then do a similar process of shipping native libs for Linux and Mac? Or, can I just get away with packaging the jars?
Thanks.
Related
Let's say that we include Nuget Package Microsoft.Extensions.Configuration in a Console .Net Core app, and include the same package in another Console .Net Core app.
When we publish these two apps, each app would publish:
Microsoft.Extensions.Configuration.Abstractions.dll
Microsoft.Extensions.Configuration.dll
in each folder.
If we had 10 console apps using the same package, we would have these dlls in 10 different folders in the application server. If we reference to multiple NuGet packages, the number of dependency dll files would multiply.
Is there a way to consolidate these dlls in one folder in the app server, so when we publish our executable, all we need to do is move the executable and configuration file to the server, and it will find these dlls in a common folder. Sort of setting a dll Path.
In consideration of Trisped's suggestion, I am posting an answer that neither me nor my boss are completely satisfied with. But for the time being to the best of my knowledge, the way to consolidate these DLLs is by writing a utility program to move those DLLs to a designated common DLL folder. And, at the same time update both .deps.json file and .runtimeconfig.json file with the new location path of the common DLL folder and additionalProbingPaths folder path structure, respectively.
We can't do this by hand manually because there would be too many DLLs to move and too tedious to edit .deps.json file, which got wiped out everytime we publish the Console App solution. I have written the utility program. Unfortunately this is company's IP so I can't share the code.
The idea is to enumerate the DLLs in the publish folder and store those filenames in a collection / dictionary, and later on use that dictionary to update the runtime dll paths in .deps.json. For CLI use, I use these options:
-c Release -f netcoreapp3.0 --self-contained false -r --runtime win-x64 -o <publisheFolder>
It would be very helpful if Visual Studio Publish Profile would include a folder that we can specify, where all Third Party and Nuget Package DLLs will reside, in addition to the Publish folder, where only the app executable, app dll, configuration files, deps.json and runtimeconfig.json will reside. Even better if the CLI would allow additional option to specify the DLL folder and, not include the runtime folder when --self-contained false is indicated.
After all, isn't one of the main purpose of DLL to allow applications to share code with each other?
I have simple Qt program. I have figured out how to use macdeployqt for deploying my app on macbooks without qt installed. But after installation from dmg (it is created using macdeployqt with -dmg option) no resources are displayed.
I added resources to project like this
It displays correctly if I simply put the app bundle from build to my program folder, but it is missing after deploying. What have I done wrong?
I downloaded Qt 5.4 and created Qt Quick application with Qt Quick Controls 1.3.
I didn't change anything in code, just built it (as release). Then I copied .exe to another folder, added all the .dll files I needed and when I launched my program there was no window, just the program process running in the Task manager.
However, I can launch program which uses QtQuick 1.1.
How can I fix it?
Thanks.
Here is an image for some more explanation:
Try to deploy your application using The Windows Deployment Tool which copies all DLL and other files necessary for deployment alongside your application executable automatically.
The Windows Deployment Tool could be found in QTDIR/bin/windeployqt.exe
Open your command prompt and add the path to your Qt directory and it's bin folder to the PATH variable like :
set PATH= path\to\Qt\bin
Next run the windows deployment tool with your application path as the argument:
windeployqt.exe <path-to-app-binary>
This way you make sure that the deployed application would work on any computer and you have included whatever necessary.
Sounds like you are missing the platform plugin. It should be in the folder of the executable, in a platforms subfolder. That's why you aren't getting a window - the runtime fails to load the platform support plugin. On windows that should be a qwindows.dll file.
I have a maven project called myproject.app. I also have another project using vaadin and gwt called myproject.ui and another project, which is an Xcore-Project converted to Maven called myproject.model.
I want to aggregate them all in a war. For this I have a myproject.war with a pom declaring the dependencies.
For Vaadin and GWT everthing is working fine as these projects are pure maven projects. The Xcore project gives me headaches because I can't manage to provide the Plugin Dependencies declared in this project in the war.
I have tried to add the needed libraries in the pom but I can only get old versions (2.2.3) from Central - the XCore project uses 2.8./3.8..
How can I solve this?
The answer is to convert the eclipse dependencies (EMF, XCore ...) to maven artifacts using the Maven Tools 4 Eclipse.
http://wiki.eclipse.org/MT4E_FAQ
For professional usage it is necessary to setup a maven repository, I used Nexus with success (if you are developing locally and alone it would be enough to install the artifacts in you local repository).
http://www.sonatype.org/nexus/
You can get it working by setting up a hosted repository with the converted Eclipse artifacts (documented in the mt4e reference) and creating a repository group aggregating the preconfigured maven central proxy and the hosted repository with the eclipse artifacts.
You need to setup your local settings.xml to use the nexus and you're good to go. Eclipse's artifacts are usable via maven coordinates.
Keep the orbit artifacts in mind and design your patch files carefully.
I have a locally developed flex application which i would now deploy on a live server. Those are the constraints:
Using blazeDS with java code
Code depends on other project in eclipse
the other project has several dependencies on 3rd party libs.
Using some external flash .swc libs
some web.xml settings are custom
In another post the structure for the exported folder is explained:
What needs to be in a .war file to deploy a Flex application?
In the default usage of Flash Builder i can create a release build and store it somewhere. This will create the release version of all the flex content.
I now want to export the .war file within the export function of eclipse and here comes the problem:
How can i exclude the files not needed in the war file. There is a debug build of the flex app and some other files i do not need.
How can i automatically insert the dependend libs of the imported eclipse project to the web-inf lib folder. When i try to export the release the function sais that the imported eclispe project cannot be created by the release process but it is within the lib folder of web-inf on .war export except the dependencies.
Can somebody point me to the documententation of flashbuilder regarding exportinmg and deployment.
Maybe i need an ANT process to optimize that. What do you think?
Thank you
For everything you just said, there are 2 ways of doing it:
1) Create it manually by copy pasting what you need in your war file into a folder, removing what isn't needed then create said war file using command line.
2) Create an automation script that does it all for you. This could be ANT or Maven (I personally prefer Maven for it's dependency management).
The latter is the enterprise way of doing it because it's easy to run ("mvn clean install war") and you can attach the script to an automation engine (like hudson, bamboo, teamcity, etc) which can then compile/test/deploy everything something is committed to your source control.