Bonjour à tous,
bon je suis un gros noob concernant le développement de plugins sous Eclipse. Mon objectif pour l'instant est de génerer un petit helloWorld histoire de voir comment la génération de code se boutique...
donc j'ai trouvé dans la doc éclipse un bout de code permettant de génerer ma classe HelloWorld :
Normalement ça doit me sortir un truc comme ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 AST ast = AST.newAST(AST.JLS3); CompilationUnit unit = ast.newCompilationUnit(); PackageDeclaration packageDeclaration = ast.newPackageDeclaration(); packageDeclaration.setName(ast.newSimpleName("example")); unit.setPackage(packageDeclaration); ImportDeclaration importDeclaration = ast.newImportDeclaration(); QualifiedName name = ast.newQualifiedName( ast.newSimpleName("java"), ast.newSimpleName("util")); importDeclaration.setName(name); importDeclaration.setOnDemand(true); unit.imports().add(importDeclaration); TypeDeclaration type = ast.newTypeDeclaration(); type.setInterface(false); type.modifiers().add(ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD)); type.setName(ast.newSimpleName("HelloWorld")); MethodDeclaration methodDeclaration = ast.newMethodDeclaration(); methodDeclaration.setConstructor(false); List modifiers = methodDeclaration.modifiers(); modifiers.add(ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD)); modifiers.add(ast.newModifier(Modifier.ModifierKeyword.STATIC_KEYWORD)); methodDeclaration.setName(ast.newSimpleName("main")); methodDeclaration.setReturnType2(ast.newPrimitiveType(PrimitiveType.VOID)); SingleVariableDeclaration variableDeclaration = ast.newSingleVariableDeclaration(); variableDeclaration.setType(ast.newArrayType(ast.newSimpleType(ast.newSimpleName("String")))); variableDeclaration.setName(ast.newSimpleName("args")); methodDeclaration.parameters().add(variableDeclaration); org.eclipse.jdt.core.dom.Block block = ast.newBlock(); MethodInvocation methodInvocation = ast.newMethodInvocation(); name = ast.newQualifiedName( ast.newSimpleName("System"), ast.newSimpleName("out")); methodInvocation.setExpression(name); methodInvocation.setName(ast.newSimpleName("println")); InfixExpression infixExpression = ast.newInfixExpression(); infixExpression.setOperator(InfixExpression.Operator.PLUS); StringLiteral literal = ast.newStringLiteral(); literal.setLiteralValue("Hello"); infixExpression.setLeftOperand(literal); literal = ast.newStringLiteral(); literal.setLiteralValue(" world"); infixExpression.setRightOperand(literal); methodInvocation.arguments().add(infixExpression); ExpressionStatement expressionStatement = ast.newExpressionStatement(methodInvocation); block.statements().add(expressionStatement); methodDeclaration.setBody(block); type.bodyDeclarations().add(methodDeclaration); unit.types().add(type);
Bon j'ai créé mon plugin-project et ajouté les dépendances qu'il faut (org.eclipse.jdt.core(3.4.4)). Ensuite pour l'executer je lance ma classe main (contenant uniquement le code de génération - voir gros paté de code plus haut) en tant que java application, et là, rien...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 package example; import java.util.*; public class HelloWorld { public static void main(String[] args) { System.out.println("Hello" + " world"); } }
Le code est bien executé, mais impossible de retrouver ma classe HelloWorld
J'ai sans doutes fait une connerie, mais vu mon manque d'experience dans le domaine, hé ben j'aimerais bien quelques éclaircissement sur la situation s'il vous plait
Merchi d'avance
Partager