Compilar um projeto em java, Usando Java

Olá, é a minha primeira vez nesse forúm. a um tempo, eu estou desenvolvendo uma game engine 2D , é uma das ultimas coisas que falta nela é a opção de Executar o projeto e Exporta-lo também.
Eu tentei de literamente todas as formas que eu consegui pensar, porém nenhuma delas funcionou.
alguém tem alguma ideia de como fazer que nesse evento compile o projeto?

  			@Override
			public void mouseClicked(MouseEvent e) {
				String CodeForCompilation = codeEditor.getCode();
			}

Que??? Vc quer compilar o seu projeto com o seu projeto em execução?

Quase isso, a idea e que quando o usuario de um click no botão execute o projeto, como no eclipse, no botão “run”

Ué, é só vc criar uma tela pro login e outra pro jogo, ou cria panel antes de iniciar o jogo pra quando o user clicar em inicar, o panel de “login” some e a do jogo aparece

Eu acho que a pergunta é quanto a realmente como fazer a compilação e execução do jogo. Veja que no código que ele postou, ele tem uma String “codigo para compilação”…

Cara, eu realmente não faço ideia de como é que você vai fazer isso. Você pode gravar esse texto num arquivo, executar o javac e executar a classe.

Pra isso cê vai ter que dar uma lida em como usar os recursos do SO no Java e é um baita de um estudo, hein

1 curtida

De acordo com o que vc está pensando, vc pode mandar um exemplo do valor retornado por esse código: codeEditor.getCode();? E o que seria esse codeEditor?

Quando vc se dispôs a construir uma engine estava ciente da complexidade, logo, não deve ser um iniciante.

Não testei, mas as soluções possíveis estão aqui:

Vc vai usar o cmd via java para compilar o projeto.

Aqui vc tem um complemento para a geração do .jar:

Esclarecendo que seu programa compila outros programas e não a si mesmo.

Não entendi.
Dentro do seu projeto, você precisa compilar um outro programa em Java e gerar um class ?
Se for isso pode chamar o javac.

basicamente o codigo escrito no meu JTextPanel, seria literalmente a mesma coisa que um codigo comun em java…

public class Example {
 public static void main(String[] args){

 }
}

Montei um código que cria o arquivo compila e executa:

String resourcePath = Main4.class.getResource("/").getPath();
File workDir = new File(resourcePath);
File tempFile = new File(workDir, "Temp.java");
String textoCodeEditor = "public class Temp { public static void main(String args[]) { System.out.println(\"Olá mundo!\"); } }";

try (FileOutputStream out = new FileOutputStream(tempFile)) {
	out.write(textoCodeEditor.getBytes(StandardCharsets.UTF_8));
}

Runtime runtime = Runtime.getRuntime();
Process compileProcess = runtime.exec("javac " + tempFile, null, workDir);
compileProcess.waitFor();

File classFile = new File(workDir, "Temp.class");

Process runProcess = runtime.exec("java " + classFile.getName().replace(".class", ""), null, workDir);

try (InputStream is = runProcess.getInputStream()) {
	BufferedReader in = new BufferedReader(new InputStreamReader(is));
	String line;
	
	while ((line = in.readLine()) != null) {
		System.out.println(line);
	}
	
	runProcess.waitFor();
	
	in.close();
}

tempFile.delete();
classFile.delete();
3 curtidas

Valeu mano! funcionou. direitinho!

Fiz o código pra funcionar como um simples exemplo. O ideal é pegar a ideia e estruturar algo mais funcional.

Se a resposta ajudou, marca ela como Solução

tem como fechar o topico (interrogação)

Clique nos tres pontinhos (ao lado do botão Responder) e depois vai na opção Mark as solution.

image

d