Pessoal eu tenho uma aplicação em JavaFx e fiz um algoritmo que envolvia task e também threads, e assim, quando eu executo a aplicação abre normalmente mais se eu limpar e construir ele da erro de diretório, eu fecho o netbeans e faço o mesmo processo acontece a mesma coisa, porem se eu comento o meu método de task e threads e faço isso, não da erro! Oque eu faço? Tem jeito de resolver? Não posso perder esse código foi difícil fazê-lo! Me ajudem
JavaFx
52 Respostas
1-Sistema operacional ?
2-Versão Java ?
3-Versao NetBeans ?
4-Versao JavaFX ?
JavaFx
Cara, olha o tanto de pergunta que ele te fez e olha a sua resposta (???)
1-Sistema operacional ?
R:
2-Versão Java ?
R:
3-Versao NetBeans ?
R:
4-Versao JavaFX ?
R:
Aproveita e já mostra seu código
Mais é que é em JavaFx
É que eu sou meio novo aqui e não manjo muito peço desculpas
Já sabemos que é em JavaFX, agora vc só precisa responder o restante das perguntas!
É que eu não sei eu só estou programando…
@FXML
public void horas(){
// Task deve substituir o call() método
// Uma tarefa (ou task) representa uma unidade de trabalho
// que deverá ser realizada. Essa unidade de trabalho pode
// rodar em uma thread separada.
Task t = new Task() {
@Override
protected Object call() throws Exception {
while (!stop.get()) {
segundo++;
if (segundo == 60) {
minuto++;
segundo = 0;
}
if (minuto == 60) {
hora++;
minuto = 0;
}
String hr = hora <= 9 ? "0" + hora : hora + "";
String min = minuto <= 9 ? "0" + minuto : minuto + "";
String seg = segundo <= 9 ? "0" + segundo : segundo + "";
// Com esse método da classe Platform, podemos
// infomar ao JavaFX uma thread que será executada sob o
// controle dele
Platform.runLater(() -> {
lbl_Horas.setText(hr + ":" + min + ":" + seg);
});
Thread.sleep(1000);
// Sleep faz com que o thread atual seja bloqueado
// imediatamente pelo número de milissegundos ou o
// intervalo de tempo que você passa para o método
}
return null;
}
};
new Thread(t).start();
// Thread é um pequeno programa que trabalha como um subsistema, sendo
// uma forma de um processo se autodividir.
}
Ah quais as versões ???
Sistema Operacional Windows 10.
Netbeans 8.2
SceneBuilder 8.5.0
Java 8?
Ai tipo o erro é esse:
ant -f C:\Users\gassu\Documents\NetBeansProjects\JavaFx_TCC jfx-rebuild
init:
deps-clean:
Updating property file: C:\Users\gassu\Documents\NetBeansProjects\JavaFx_TCC\build\built-clean.properties
Deleting directory C:\Users\gassu\Documents\NetBeansProjects\JavaFx_TCC\build
C:\Users\gassu\Documents\NetBeansProjects\JavaFx_TCC\nbproject\build-impl.xml:1395: Unable to delete file C:\Users\gassu\Documents\NetBeansProjects\JavaFx_TCC\dist\JavaFx_TCC.jar
FALHA NA CONSTRUÇÃO (tempo total: 0 segundos)
Esse erro só ta falando que não ta dando pra deletar o .jar, Se vc tiver com ele aberto, fecha e deixa o Netbeans limpar e construir
É que eu não estou com ele aberto, no caso o .jar
O mais louco é se eu comento o método, ai da certo ksksks
Já tentei apagar a pasta dist mais também não da, não sei oque fazer
Aparentemente o método continua rodando depois que vc “fecha” o programa.

Se isso aqui tiver aparecendo, é pq o programa ta ativo, senão, é pq já fechou
Isso no netbeans? Porque o meu também não apareceu nada como se já estivesse fechado
Seguinte …
Esse codigo da Thread e do Task esta correto, agora, será que dá pra você mostrar um pouquinho mais abaixo do umbigo do codigo ? (risos)
Nesse caso preciso colocar seu programa aqui e reproduzir o erro.
Mas veja bem, quando Eu falo para o pessoal postar o codigo aqui pra mim da uma olhada, não pensa que sou contratado do Guj pra dar manutenção.
É que vejo que você está começando, e assim como você tambem um dia comecei e tive ajuda e agora faço o mesmo.
Lembro que uma vez Eu tava começando no Java e tinha muitas duvidas, então liguei lá na IBM e a primeira pergunta foi, qual seu codigo de cliente ?, então entendi que tinha que pagar para eles darem suporte.
Como sou Teimoso então liguei na Borland ( nem sei se ainda existe ), E um programador Java me atendeu, Cara, Ele ficou tipo assim umas 2 horas comigo no telefone, me atendeu de graça ( fala serio ) e resolveu minha duvida.
Que bom ler isso que você escreveu, eu realmente agradeço imensamente a você que esta também a me ajudar, eu vou fazer meu TCC é minha primeira graduação e eu tenho 18 anos, e estou tentando fazer com que quando o usuário iniciar a tela já apareça a hora atualizando igual naqueles canais gringos programadores, tenho um conhecimento em Java mais assim, de 1 a 1 ano e pouco e resolvi tentar um desafio com JavaFx que por sinal é um grande desafio para mim, estou melhorando meus selects para fazer um dashboard bem maneiro (risos).
Ano passada eu fiz um software de controle de estoque que por sinal eu gostei muito dele e também um software de entregas, esse ano pretendo ir mais para parte de finanças, eu fico muito feliz de ler suas palavras e também agradeço pois eu sou novo aqui no guj e não sei se devo já ser chamado de profissional, eu trabalhei com o Calendar que da de fazer muitas coisas com ele, e em relação a threads e task são as primeiras vezes que uso isso, eu dei uma olhadinha na documentação e vi exemplos no fórum.
Os códigos são esses:
// Propriedade Booleana // Propriedade Booleana Simples
private BooleanProperty stop = new SimpleBooleanProperty(false);
Calendar data = Calendar.getInstance();
private int hora = data.get(Calendar.HOUR_OF_DAY);
private int minuto = data.get(Calendar.MINUTE);
private int segundo = data.get(Calendar.SECOND);
@FXML
public void horas(){
// Task deve substituir o call() método
// Uma tarefa (ou task) representa uma unidade de trabalho
// que deverá ser realizada. Essa unidade de trabalho pode
// rodar em uma thread separada.
Task t = new Task() {
<a class="mention" href="/u/override">@Override</a>
protected Object call() throws Exception {
while (!stop.get()) {
segundo++;
if (segundo == 60) {
minuto++;
segundo = 0;
}
if (minuto == 60) {
hora++;
minuto = 0;
}
// ? então
// : recebe
String hr = hora <= 9 ? “0” + hora : hora + “”;
String min = minuto <= 9 ? “0” + minuto : minuto + “”;
String seg = segundo <= 9 ? “0” + segundo : segundo + “”;
// Com esse método da classe Platform, podemos
// infomar ao JavaFX uma thread que será executada sob o
// controle dele
Platform.runLater(() -> {
lbl_Horas.setText(hr + “:” + min + “:” + seg);
});
Thread.sleep(1000);
// Sleep faz com que o thread atual seja bloqueado
// imediatamente pelo número de milissegundos ou o
// intervalo de tempo que você passa para o método
}
return null;
}
};
new Thread(t).start();
// Thread é um pequeno programa que trabalha como um subsistema, sendo
// uma forma de um processo se autodividir.
}
<a class="mention" href="/u/override">@Override</a>
public void initialize(URL url, ResourceBundle rb) {
// TODO
horas();
}
Sim, mas cadê a classe principal e tambem o arquivo fxml ?
manda o projeto feito no NetBeans.
Se preferir cria um zip do diretorio do projeto, assim dá pra ver na integra.
Se seu projeto for grande ou envolver direitos autorais, cria um novo apenas com a essencia do erro e posta aqui.
Aqui estão os arquivos… Tem o projeto inteiro e se quiser tem o banco de dados…
Observação: Para dar erro tem que limpar e construir duas vezes.
http://www.mediafire.com/file/0cbzmc7b6vbq8v9/BANCO_DADOS_TCC.sql/file
http://www.mediafire.com/file/6vsxki7raybolb2/JavaFx_TCC.7z/file
Ok
Agora eu peguei e adicionei raio button e peguei o esqueleto ai tento e tento e mesmo assim da erro. Agora eu não precisa nem construir duas vezes, de primeira já da erro.
Amanha Eu poderei verificar.
Mas me diga, qual a versão do JavaFx vc esta’ usando ?
Então eu sei que eu baixei o Scenne e tipo a versão e SceneBuilder 8.5.0… Ai eu faço a ligação do netbeans com ele e tipo ai eu vou em aplicação JavaFx e crio com @FXML.
Se você poder o mais rápido possível eu agradeço… Eu preciso dar continuidade no meu trabalho de conclusão de curso e você é um dos únicos que pode me ajudar neste momento…
Bom !!, uma coisa é a versão do SceneBuilder e outra é a versão do JavaFX.
E como eu faço para ver a versão do JavaFx ?
Se foi com Java 8 então deve ser a 8 mesmo, está embutida na JVM. É que nas versões mais recentes a Oracle separou a biblioteca JavaFX da JVM.
Então deixa quieto é a 8 mesmo.
Realizei Clean and Build varias vezes, fechei e sai varias vezes e esta normal.
Opções (por tentativa de erros e acertos, ir eliminando possibilidades )
- Ver se tem algum programa impedindo a delecao do arquivo JavaFx_TCC.jar , se estiver com o Terminal aberto no diretorio em que ele está o SO está usando e pode dá erro, porque o Clean and Build vai limpar tudo e criar as pastas e diretorios.
2.Tenta instalar o NetBeans 11.2, aqui testei dentro dele, mas se ainda preferir o 8.2 poderá instalar novamente.
3.Virus ( Windos não presta !! )
Observacao : Definitivamente isso não tem nada a ver com a Task e Thread, mas acontece que quando você da’ um Clean and Build ele precisa apagar tudo dentro do diretorio para depois criar tudo de novo.
Outra coisa importante : Quando você Fechar o Programa certifica que todos os modulos que foram invocados se foram fechados mesmo, ví que pra cada chamada voce esta usando uma Stage.
@FXML
private void cadastro_Clientes(ActionEvent event) {
Cadastro_Clientes cadastro = new Cadastro_Clientes();
try {
cadastro.start(new Stage());
} catch (Exception e) {
Alert a = new Alert(Alert.AlertType.ERROR);
a.setHeaderText("SELECIONE O USUÁRIO QUE DESEJA ALTERAR!");
a.show();
}
}
Para isso poderá usar quando encerrar o programa principal.
System.exit(0);
stage.setOnCloseRequest((e) -> {
System.exit(0);
});
Bons Codigos.
Vou dar uma olhada aqui. Muito obrigado
Então eu baixei o NetBeans versao 11.2 e ainda esta dando erro, ai tive uma outra ideia, passar o arquivo para o pen drive e excluir oque esta nos projetos do netbeans conclusão… A pasta não exclui… Diz que esta aberto em outro lugar mais não tem em outro lugar
Pois é, é esse o erro e problema.
Mas tem uma outra dica pra te passar a fim de evitar de ficar toda hora dando Clean and Build, então ele será usado somente de vez em quando.
No NetBeans Na Aba Files ( procura o seu projeto )
–> JavaFx_TCC
–> nbproject
–> project.propertties
–> compile.on.save.unsupported.javafx=false // aqui coloca false e salva
Então eu não sei oque fazer ksksks
Pode tentar criar um outro projeto com outro nome e copiar tudo dentro dele e ver se dará o mesmo erro.
Cara realmente eu estou muito triste, fiz um novo projeto bo netbeans que instalei versao 11.2 e também da pau… Nao limpa e nem constrói mais de 1 vez
Acho que achei o erro!
http://www.mediafire.com/file/qg41k73sqb4ov8h/TT.PNG/file
Tem no cantinho quando você executa um projeto run-sigle eaiw tem uma caixinha com running… Consegue ver no link da foto?!
Se eu não fechar ele vai dar erro na hora de limpar e construir, mais se eu fechar no “x” depois de executar meu programa ele limpa e constrói de boa! Sabe me explicar o porque isso acontece?
Que caixinha é essa ?, não Tô vendo na foto.
Cara, jogar o negocio no MediaFire é sacanagem, cola a imagem aqui
Da erro de tamanho
A caixa que mostra que o programa esta em execução
Depois de fechar o programa ainda fica parte dele aberto em outro icone ?
Esse running enquanto não fecha, ele não limpa e constrói
Então, no windows usa o Gerenciador de Tarefas e veja se depois que você abriu o Programa e fechou ele, se ainda fica algum Stage dele rodando na memoria ?
Sim se fechar esse running da tudo certo…
CTRL ALT DEL --> Gerenciador de Tarefas
Digamos que o programa esta rodando pela primeira vez, depois do Clean and Build e em seguida você fecha o programa.
La no Gerenciador de Tarefas consta algum Java do programa ainda rodando ?
Depois que eu fecho o programa some do gerenciador de tarefas mais se eu não fechar o running vai dar erro e não vai limpar e construir… Mais se eu fechar o running e a aplicação vai normal, acho que eu nao posso limpar e construir quando estiver runando… Acho que isso é normal mesmo
Voce colocou o exit(0) que Sugeri anteriormente ?
Eu não sei onde colocar esse comando
Posso criar um botão para isso?
Pode colocar um evento no Botão “Sair do Programa”.
Caso
Button b = new Button(“Saida”); // mas pode tambem estar dentro da tela feita no fxml ou ainda em um MenuItem.
Entao dispara um evento
b.setOnAction( (e) -> {
System.exit(0);
});
Aqui é a opcao caso o StageStyle esteja DECORATED <-- padrao
`stage.initStyle(StageStyle.UNDECORATED);` // caso comente essa linha
// aparece a opção para Fechar a Tela entao dentro do programa principal
// JavaFx_TCC inclua esse evento
stage.setOnCloseRequest((e) -> {
System.exit(0);
});
Problema resolvido! Obrigado irmão

