Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » TMF (Xtext) » How to work with mydsl from java?
How to work with mydsl from java? [message #1460426] Mon, 03 November 2014 14:58 Go to next message
Marko Markovic is currently offline Marko MarkovicFriend
Messages: 35
Registered: August 2014
Member
Hi,

I have example.mydsl and Inferr which transform it to java. I would like to write other java class with main method and read example.mydsl in main method and I want to write in main method where I want to save generated java file from example.mydsl.

Something like this:

public class Test {
	public static void main(String[] args) {
		read(example.mydsl);
		saveGeneratedFileTo(url..)
	}
}


Is it possible?

Thanks in advance,

Marko
Re: How to work with mydsl from java? [message #1460443 is a reply to message #1460426] Mon, 03 November 2014 15:20 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
for the first part

https://wiki.eclipse.org/Xtext/FAQ#How_do_I_load_my_model_in_a_standalone_Java_application.C2.A0.3F

for the seccond part: obtain an igenerator and call it.

you may adapt the generator fragment in the workflow to generate a java main



Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: How to work with mydsl from java? [message #1462772 is a reply to message #1460443] Wed, 05 November 2014 23:27 Go to previous messageGo to next message
Marko Markovic is currently offline Marko MarkovicFriend
Messages: 35
Registered: August 2014
Member
Thak you Christian,
I did next:
package pakett;


import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.ui.internal.Model;
import org.eclipse.xtext.generator.IGenerator;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.resource.XtextResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceImpl;

import com.google.inject.Injector;
import com.vps.java.ServerStandaloneSetup;
import com.vps.java.generator.ServerGenerator;
import com.vps.java.jvmmodel.ServerJvmModelGenerator;

import org.eclipse.xtext.generator.IFileSystemAccess;

public class Test {

	public static void main(String[] args) {		
		
		new org.eclipse.emf.mwe.utils.StandaloneSetup().setPlatformUri("../");
		Injector injector = new ServerStandaloneSetup().createInjectorAndDoEMFRegistration();
		XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class);
		resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL, Boolean.TRUE);
		Resource resource = resourceSet.getResource(URI.createURI("platform:/resource/Probaaa/src/pakett/test.server"), true);
		Model model = (Model)resource.getContents().get(0);

		ServerGenerator gen = new ServerGenerator();
	}

}


but got next error:
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/emf/mwe/core/ConfigurationException
	at pakett.Test.main(Test.java:23)
Caused by: java.lang.ClassNotFoundException: org.eclipse.emf.mwe.core.ConfigurationException
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	... 1 more


Parameter in setPlatformUri("../") is not good but I tried a lot path but always got error.

Do yuo know what is problem and what should I do next?

Thank you very much,
Marko
Re: How to work with mydsl from java? [message #1463069 is a reply to message #1462772] Thu, 06 November 2014 07:15 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
Hi,

if you use file uris you wont need the platform uri stuff.
never the less a NoClassDefFoundError should be clear
looks like you are missing the plugin org.eclipse.emf.mwe.core

p.s. how to you call the java main?


Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: How to work with mydsl from java? [message #1463754 is a reply to message #1463069] Thu, 06 November 2014 22:22 Go to previous messageGo to next message
Marko Markovic is currently offline Marko MarkovicFriend
Messages: 35
Registered: August 2014
Member
Hi,

I create java class with main method in java project in Eclipse and included all required plugins. I run this class with right click->Run As->Java Application and have error which I mentioned in a previous post.
I still do not know how to solve the problem.
Thank you Christian,

Best regards,
Marko
Re: How to work with mydsl from java? [message #1463781 is a reply to message #1463754] Thu, 06 November 2014 23:00 Go to previous messageGo to next message
Christian Dietrich is currently offline Christian DietrichFriend
Messages: 14665
Registered: July 2009
Senior Member
am not sure what you exactly did

(1) create a xtext project using the wizard
(2) create main file
(3) run it once from eclipse
(4) use the export -> java -> runnable jar file wizard.


Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
Re: How to work with mydsl from java? [message #1469235 is a reply to message #1463781] Tue, 11 November 2014 12:20 Go to previous message
Marko Markovic is currently offline Marko MarkovicFriend
Messages: 35
Registered: August 2014
Member
Thank you Christian, it works now.

I have other question,
Is Xtext team maybe plannig to develope Xtext for other language, not only java with Xbase, (javascript or python or any other)?

Best regards,

Marko
Previous Topic:Opening Editor in Read-only Mode.
Next Topic:Errors running builder 'Xtext Project Builder' on project
Goto Forum:
  


Current Time: Thu Apr 25 00:34:14 GMT 2024

Powered by FUDForum. Page generated in 0.03347 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top