Boa tarde,
eu executo um codigo para enviar email pelo metodo POST pelo netbeans, e o email é recebido normalmente, quando do um build and clean e executo o .jar o email apresenta erro
ao mapear o que o netbeans faz, peguei o comando enviado quando executo no mesmo
se eu abrir um cmd e digitar :
"C:\Program Files\Java\jdk1.8.0_101\bin\java.exe" -Dfile.encoding=UTF-8 -classpath F:\NetBeans\VerificaRobo\build\classes verificarobo.MainWindow
meu programa envia o email normalmente
porem dessa segunda maneira fica o cmd aberto travado, eu gostaria de “limpar” isso da tela
teria um modo correto de buildar ou alguma configuração que fiz errada?
desde ja meu obrigado
aix
Agosto 23, 2016, 12:18am
#2
Ola @Mendes_Hemerson ,
No seu .jar precisa ter um arquivo chamado MANIFEST.MF dentro da pasta META-INF que ira conter um mapeamento para o class-path indicando os jar’s que utiliza no projeto e um mapeamento para a main-class, ex. de como seria esse arquivo:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.6.0_25-b06 (Sun Microsystems Inc.)
Class-Path: lib/quartz-2.1.6.jar lib/servlet-api.jar lib/log4j-1.2.17.
jar lib/slf4j-api-1.6.1.jar lib/eclipselink-2.3.2.jar lib/javax.persi
stence-2.0.3.jar lib/org.eclipse.persistence.jpa.jpql_1.0.1.jar lib/s
lf4j-log4j12-1.6.1.jar lib/ojdbc6.jar lib/commons-codec-1.7.jar
X-COMMENT: Main-Class will be added automatically by build
Main-Class: verificarobo.MainWindow
Com isso, você pode construir um .bat ou .sh se usa linux e fazer a invocação do jar ou até mesmo cadastrar como um serviço do seu sistema, espero que seja útil, abraços.
aix:
Ola @Mendes_Hemerson ,
No seu .jar precisa ter um arquivo chamado MANIFEST.MF dentro da pasta META-INF que ira conter um mapeamento para o class-path indicando os jar’s que utiliza no projeto e um mapeamento para a main-class, ex. de como seria esse arquivo:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.6.0_25-b06 (Sun Microsystems Inc.)
Class-Path: lib/quartz-2.1.6.jar lib/servlet-api.jar lib/log4j-1.2.17.
jar lib/slf4j-api-1.6.1.jar lib/eclipselink-2.3.2.jar lib/javax.persi
stence-2.0.3.jar lib/org.eclipse.persistence.jpa.jpql_1.0.1.jar lib/s
lf4j-log4j12-1.6.1.jar lib/ojdbc6.jar lib/commons-codec-1.7.jar
X-COMMENT: Main-Class will be added automatically by build
Main-Class: verificarobo.MainWindow
Com isso, você pode construir um .bat ou .sh se usa linux e fazer a invocação do jar ou até mesmo cadastrar como um serviço do seu sistema, espero que seja útil, abraços.
Bom dia,
eu manipulei o manifest e deixei o mesmo de acordo com o citado, buildei o jar e verifiquei que o manifest se encontra presente
Ao fazer o teste ainda assim nao consegui enviar, da algum erro no post
segue codigo, quem sabe assim possa facilitar
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.Arrays;
import javax.swing.JTextArea;
public class EnviaEmail {
/**
* @param msg
* @param janela
* @param status
* @param server
* @param log_ocorrencia
*/
public void enviaEmail(String msg, JTextArea janela, String status, String server, JTextArea log_ocorrencia) {
try {
URL url = new URL("url_post");
URLConnection con = url.openConnection();
// specify that we will send output and accept input
con.setDoInput(true);
con.setDoOutput(true);
con.setConnectTimeout(20000); // long timeout, but not infinite
con.setReadTimeout(20000);
con.setUseCaches(false);
con.setDefaultUseCaches(false);
// tell the web server what we are sending
con.setRequestProperty("Content-Type", "text/xml");
OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream());
String aux = "<Email xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.datacontract.org/2004/07/MDAWebApi.Models\">\n"
+ " <Assunto>[Report] Servidor " + server + ", " + status + "</Assunto> \n"
+ " <Corpo>" + msg + " Problema INTERNO, NÃO abrir chamado</Corpo>\n"
//+ " <DataEnvio>" + data + "</DataEnvio>\n"
+ " <De>email@email.com.br</De>\n"
+ " <Para>email@email.com.br</Para>\n"
+ " <SenhaMda>555</SenhaMda>\n"
+ " <UsuarioMda>555</UsuarioMda>\n"
+ "</Email>";
writer.write(aux);
// janela.append(aux + "\n\n");
// System.out.printf(aux);
writer.flush();
// reading the response
InputStreamReader reader = new InputStreamReader(con.getInputStream());
StringBuilder buf = new StringBuilder();
char[] cbuf = new char[2048];
int num;
while (-1 != (num = reader.read(cbuf))) {
buf.append(cbuf, 0, num);
}
String result = buf.toString();
log_ocorrencia.append("\nResponse from server after POST:\n" + result + "\n");
janela.append("\nE-mail enviado com sucesso!\n\n");
log_ocorrencia.append("\n\tE-mail enviado com sucesso!\n");
} catch (Throwable t) {
janela.append(Arrays.toString(t.getStackTrace()));
janela.append("\nVerificar Erro de envio de E-mail!\n\n");
log_ocorrencia.append("\nVerificar Erro de envio de E-mail!\n\n");
}
}
}
Erro:
[sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source), sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source), verificarobo.EnviaEmail.enviaEmail(EnviaEmail.java:59), verificarobo.VerificaRobo.checaservidor(VerificaRobo.java:107), verificarobo.VerificaRobo.inicia(VerificaRobo.java:208), verificarobo.VerificaRobo.run(VerificaRobo.java:200), java.lang.Thread.run(Unknown Source)]
Verificar Erro de envio de E-mail!
ps: é algo bem simples feito as pressas somente para me enviar um email se tiver um processo travado em um servidor que devo monitorar
desde ja meu obrigado
aix
Agosto 23, 2016, 12:16pm
#4
Pelo erro parece que por algum motivo ele não recebeu a url_post, de onde vem este valor?
Desculpe pela simplicidade, POST é uma novidade para mim, nao entendi muito bem a sua pergunta
Voce deseja o html post que eu subo na url?
aix
Agosto 23, 2016, 12:27pm
#6
Não tem problema, olha só:
URL url = new URL(“url_post”);
URLConnection con = url.openConnection();
seu código abre uma conexão nesta url_post, que endereço é esse ?
aix
Agosto 23, 2016, 1:43pm
#8
ok, mas “url_post” é um String fixa, em que ponto ela vira uma url(http://www.mdasolucoes.com.br/mdawebapi/api/Email )?
propria declaração dela
eu troquei para enviar a um colega de trabalho indicando onde puis e nao vi q nao tirei as aspas, porem nas aspas esta a minha url certa, nao é uma variavel
ex meu codigo:
code
try {
URL url = new URL(“http://www.mdasolucoes.com.br/mdawebapi/api/Email ”);
URLConnection con = url.openConnection();
code
nao sei se ira ajudar
rodei ele pelo PLAY do netbeans, o response que recebo é esse:
Response from server after POST:
[Report] Servidor 192.168.0.19, iSMS inoperante00 Tue Aug 23 11:25:17 BRT 2016
Robo iSMS no servidor 192.168.0.19 contem 2 robos ativos, por favor verificar2016-08-23T11:25:17.3722869-03:00email@email.com.br true192.168.0.26795556email@email.com.br 555192.168.0.2<Usu]rioEnvio>MDAWebApi555
aix
Agosto 23, 2016, 4:37pm
#11
pelo que estou entendendo quando você roda pela IDE funciona, mas quando roda standalone da problema ao abrir a conexão, é isso ?
aix
Agosto 23, 2016, 5:07pm
#13
muito estranho, no código não aparenta nenhum erro, tem firewall ligado algo do tipo?
nada, mesmo no pc de casa mesmo erro.
porem ao abrir o prompt de comando e digitar
“C:\Program Files\Java\jre1.8.0_101\bin\java.exe” -Dfile.encoding=UTF-8 -classpath F:\NetBeans\VerificaRobo\build\classes verificarobo.MainWindow
ou
“C:\Program Files\Java\jdk1.8.0_101\bin\java.exe” -Dfile.encoding=UTF-8 -classpath F:\NetBeans\VerificaRobo\build\classes verificarobo.MainWindow
ele abre meu standalone e o email eh enviado normalmente
segundo um colega de trabalho, com esse comando eu estou recompilando a classe main
como falei, entendo pouco dessas coisas ainda
por isso que acredito ser algo que foi setado ou mal configurado para a criação do .jar
aix
Agosto 23, 2016, 5:25pm
#15
como você esta gerando o jar? esta usando uma IDE ?
clico na vassoura e martelo do netbeans (“limpar e construir” shift+f11) e busco na pasta dist o arquivo criado
sempre usei essa maneira, quando linko uma biblioteca externa ele cria uma pasta lib com o que foi linkado, nesse caso nao tm nada, somente o .jar e um read me
aix
Agosto 23, 2016, 5:54pm
#17
esta tudo correto, deveria fucnionar, estou pensando o que pode ser.
aix
Agosto 23, 2016, 10:27pm
#18
brother como esta configurado o java? JAVA_HOME a Path e o CLASSPATH ?
Nas variaveis de ambiente tenho somente:
path: C:\ProgramData\Oracle\Java\javapath
aix
Agosto 24, 2016, 12:30pm
#20
esta errado, adiciona como eu faço e testa por favor:
Configuração das variáveis de ambiente
se fosse só para executar poderia por apenas a jre, mas faz como eu faço no link acima para testarmos.