Codename One Gui Builder error - codenameone

New install of Eclipse Mars.1, install codename one from market place, new install of Java 1.8 running on OSX 10.9.4.
Eclipse and the project itself are set to use Java 1.8 for all compilations, I also changed the settings in the build.xml to set 1.8 as the version to use.
When I try to add a gui builder page by right clicking on the project title and selecting "New/Other" and selecting Gui Builder, then next & finish I get the error.... '<>' operator is not allowed for source level below 1.7.
Searched Google for the error and nothing related to Codename one.
Any help would be greatly appreciated.

Open build.xml and do find and replace to replace all 1.7 with 1.8.
Open project properties (You will find it under File), and switch to Sources tab, make sure that Source/Binary Format is set to JDK 8.
Switch to CodenameOne tab and select Build Hints, now add java.version key and give it a value of 8, if it's not already added.

The latest plugin v 1.0.0.201606211322 resolves this issue

Related

Library conflict when running AppEngine using PyCharm

I am trying to run AppEngine Standard Environment inside PyCharm.
The problem is when I include Google App Engine SDK as part of External Libraries, but it contains multiple version of old libraries that somehow has higher priority than the library I have in my env folder.
Specifically, it is loading jinja2-2.6 which doesn't work for Python 3, even though I have jinja2-2.11.3 in my env/lib.
Pycharm does have a bit of issues with its library system as many users have reported before. To Adjust the version of your libraries in PyCharm you must access the interpreter options relating your python interpreter for your current project, you can access this option by searching in the menu Settings/Preferences or by pressing Ctrl+Alt+S
In this dialog you can view the packages available and their current running versions. You can update the version by clicking on the ▲ symbol next to the version. if you have trouble upgrading to a specific version you may need then you can alway remove a package by clicking on the "-" on the right hand side after clicking on the package you wish to remove. After removing the package you can add a new one by clicking on the "+" button right on top of the "-" button. Here you can search for the package you need and before installing a package, you can check the specific version checkbox to search for the version you require in the dropdown menu next to it.
This link contains images for what i'm explaining here.
Remember that these packages are taken directly from the pip so if you have errors using the interface you can always try to manually edit the packages (also described in the link).
To upgrade a specific package using pip for python3 you can use the following command:
pip3 install --upgrade PackageName

How do I migrate an older theme contribution to Qooxdoo 6.0?

I've recently been asked whether it was possible for me to convert my older theme contributions to the new Qooxdoo packaging system. So I installed Qooxdoo 6.0 and got a first test app running - not without problems because the instructions in the official docs are a bit buggy (e.g "npx qx" is an unknown command with my Ubuntu 18.04). I also read about the packaging system and what to do to install one of the existing packages from the Qooxdoo repository.
Then I followed the steps described in section "Create a new package". This procedure resulted in a folder structure which looked familiar at first sight, but a closer look made me wonder: There are two resource folders now, one is under "source" (as I would have expected) and the other one is under "source/class/[mypackage]". I also noticed that there is a "demo" folder in "source/class/[mypackage]", which used to be a top-level folder in previous Qooxdoo versions.
I then copied the theming files of my contribution to "source/class/theme", the demo app files to "source/class/[mypackage]/demo" and the demo resources to "source/class/[mypackage]/resource". After compiling the project I managed to run the demo app, but only without the expected resources (no icons, no fonts, no background images). The theming as such appears to be applied properly, but I keep getting plenty of error messages telling me "404 (Not found)" and "Image could not be loaded".
What am I doing wrong?
I guess you are running into a bug with our template for packages ... please open an issue https://github.com/qooxdoo/qooxdoo-compiler/issues/
As for how to do it. Have a look at an actual theme package for 6.0 https://github.com/ITISFoundation/qx-osparc-theme there you can see the required structure.
Also, for this kind of question, interactive help is probably best. Visit the qooxdoo chat on https://gitter.im/qooxdoo/qooxdoo

Managing Demo / Full version of my app in Codename One

I was ordered to deliver an app in 2 versions : one demo/light (limitted features) the other full (all features). I have a boolean in code which tells which one is running. They both run as expected in the simulator or on a test device (iOS and Android).
Now I want to distribute them. So I read that it was possible with XCode to define different targets corresponding to the light / full versions and with Eclipse it was possible to define the base project as a library and then create 2 projects also corresponding to the light / full versions.
Before I start messing around with my app project, is there a recommended way to achieve my goal with CodenameOne maybe via build hints that would change the app name and the boolean inside the code depending on a build hint value ?
EDIT 19/09/2016 (working methodology)
Following Shai's advices here are the steps I followed to generate a light version based on the full one (in case someone encounters the same case) :
Under your IDE (Eclipse or whathever) copy and paste the base package in the src folder and rename it com.packageLIGHT.appName (simply append LIGHT to the package name, don't use underscore or space since it will be considered as an illegal character later by Apple)
=> So now in src folder you should have
src
|- com.packageLIGHT.appName
|- com.package.appName
Then in com.packageLIGHT.appName remove all files except MyApp.java (aka the main file). In this file add import com.package.myApp.*;
3.1. (ECLIPSE) In "Run/Run Configurations" menu copy the existing config and paste it as Simulator_MyAppLIGHT and in arguments change it to "com.packageLIGHT.myApp.MyApp".
3.2. (NETBEANS) The "Run/Set Project Configuration" does not seem to work as expected since any configuration that might be selected leads to the same default behaviour. However applying step 6. and running the project in the simulator afterward has the expected result.
Now you should be able to run both versions by running the different configurations.
For iOS (not sure if it is also needed for Android) you have to generate another pair of provisioning files. So move the existing ones in iosCerts/FULL and use CN1 wizard to generate the "light" version provisioning files where you'll adapt the package name to match "com.packageLIGHT.myApp". Store the generated files in iosCerts/LIGHT. There is no need to overwrite the existing certificates (more on certificate here).
Finally replace in "codenameone_settings.properties" the original package name with the "light" one for the lines codename1.ios.appid and codename1.packageName. Also change the iOS provisioning files to iosCerts/LIGHT or FULL depending of what you want to build.
Now when you send the Android / iOS build to CN1 server it will build either the "light" version or the full one depending on what package is written in "codenameone_settings.properties".
Please note : if at step 6. you get NullPointerException on build.xml on line 469 (android build) or 344 (iOS build) which deals with certPassword="${codename1.android.keystorePassword} (android build) or appid="${codename1.ios.appid}" (iOS build) and you're using CN1 plugin version 1.0.0 20160812 under Eclipse then Shai's comment below may be worth it
If you want 2 distinct versions of the same app then you need 2 distinct packages since the thing that defines the app uniquely in the store is the app package. There are two common ways to do it:
Place functionality in cn1lib and build two apps
Build one app and just swap the codenameone_settings.properties file
The first one should be pretty clear but might be a bit painful to work with as you can't run the cn1lib and might run into issues debugging it.
The second one is actually rather simple. Create the main version of the app then add the package to the demo version and copy the main file there.
To run the demo version just change the package in the IDE "run settings".
Copy your codenameone_settings.properties to a separate file and just replace all the regular package names to the demo package names. When you want to build the "demo" version replace the codenameone_settings.propeties files with one another, you can automate that with a script obviously.

Failed to initialize App Engine SDK 1.8.9

I am using Indigo on a Mac Pro (10.9.1). I updated to Java1.7 in order to run some updated Google Play Service samples. Under Installed JREs, JAVA7 is shown as the only and default choice, which points to the new Java path. But when I start Eclipse, it started complaining that "JRE version is 1.6.0; version 1.7.0 or later is needed to run Google plugin for Eclipse".
I tried to add the vm option in eclipse.ini, i.e. I added
-vm
/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/home/bin/java
above "-vmargs" as described here: http://wiki.eclipse.org/Eclipse.ini.
It doesn't make any difference though. Since then, I have uninstalled GPE from Eclipse and installed them again via "install new software" from https://dl.google.com/eclipse/plugin/3.7. Still the same problem. Under Google->App Engine, there is an error message "Failed to initialize App Engine SDK (path)". This points to appengine-java-sdk-1.8.9.
I have checked my Java version using all means I am aware of, i.e. from run Java -version, using Java's control panel, output from code... They all show I am using Java 1.7.0.51.
Any help is appreciated!
Edit: Google has provided a solution that works great. Add this argument in eclipse.ini
-vm
/Library/Java/JavaVirtualMachines/jdk1.7.0_WHATEVERTHESUFFIXIS/Contents/Home/jre/lib/server/libjvm.dylib
Make sure that eclipse Is compiling your project to 1.7 specifications. Even though you have 1.7 selected as your virtual machine, it might be compiling to 1.6. It's in the eclipse project settings

Google App Engine .jsp Problem

I just created a .jsp file in my google app engine project. How to resolve the below error.
Description Resource Path Location Type
Your project must be configured to use a JDK in order to use JSPs
proj1.jsp
/Proj1/war Unknown Google App Engine Problem
Kindly let me know.
it is the error. In order to compile jsp you need a jdk installed in your system. If you are running on a JRE you will get this error. Also make sure that your project has been configured with a jdk in it's path.
For sake of improving answers
stack over flow reference
.jsp file not working for Google App Engine guestbook tutorial
the accepted answer was a year ago
updated answer from reference
In the end I seem to have wasted my bounty as I found the solution (with a little help) myself.
The problem arose because I was unfamiliar with Eclipse. When I found the more verbose error message Your project must be configured to use a JDK in order to use JSPs guestbook.jsp.
It was located in a tab called 'Markers' in pane found at the bottom of the Eclipse window.
It seems that Eclipse wasn't aware that I had installed the JDK.
In Eclipse I went to menu Window->Preferences->Java->Installed JREs . Eclipse had only one entry there named jre6 I clicked the Add... button Chose Standard VM and browsed to the base directory of the jdk (in my case C:\Program Files\Java\jdk1.6.0_20)
I rebuilt my project but the same error was there. I had forgotten to check the box that tells Eclipse to use the jdk instead of the jre.
As soon as I did that Eclipse rebuilt my project and the error was gone.
To solve this problem, first please confirm that JDK is already install on your computer. If it not available, go to Oracle JDK hompage to download and install it.
Then follow some steps to config JDK.
When JDK is configured, return eclipse and build project if you still get current error, I decide you are using JRE instead JDK. Choose Prefrences - Java - Install JRE - Un-check JRE and check JDK
Rebuild project
Hope this help!
Set JDK as your Installed JREs in Eclipse.
In Eclipse Window->Preference->Java->Installed JREs
Click on Add Button | Select VM ->Add JRE
Select Folder of jdk as "JRE Home" Directory.
Click OK.
Build your GAE Project
JFTR:
For those who use Ubuntu and OpenJDK, and may come here looking for help on the same issue: EVEN when it is called Open*JDK* (i.e. java-6-openjdk) actually you may have installed only the JRE part since they are on different packages, so you need to install also the JDK. For version 6 this is done via:
$ sudo apt-get install openjdk-6-jdk
Note that you may have yet an openjdk-6-jre in your system.
If your problem persist, you must sure that in your project use JDK library. Go to your project->click right->Build Path->Configure Build Path->Add library->JRE System Library->Select "Workspace default JRE (jdk1...)"->Finish, and in "Order and Export" UP your JDK Library above JRE Library. When you save your proyect it´s ok.

Resources