Erro de implementação do Glassfish “O tipo de arquivo do MyProject.jar não foi reconhecido”

Eu criei um aplicativo da web dynamic e gostaria de implantá-lo com glassfish. Eu consegui construir minhas fonts para MyProject.jar. Mas quando eu implantei, o seguinte erro foi exibido:

falha remota: o tipo de arquivo /home/davenlin/MyProject/build/MyProject.jar não foi reconhecido

Meu projeto é apenas um aplicativo Restful normal, não um aplicativo ejb, portanto, não sei se devo gerar um MyProject.war em vez de MyProject.jar.

Por favor me ajude. Obrigado !

Ok, porque o meu comentário foi bastante unexplanatory:
Os aplicativos da Web são manipulados por servidores de aplicativos ou contêineres de servlet.
Ambos fazem muito trabalho para você e as aplicações web não são comparáveis
para aplicativos java desktop ou standalone.
Enquanto seus aplicativos independentes são implementados como arquivos jar e, em seguida, executados pela JVM,
os aplicativos da web são executados pelo contêiner (servidor de aplicativos / contêiner de servlet).
Então, isso requer que seu aplicativo forneça configuração adicional
e permite que o próprio arquivo tenha uma estrutura diferente.
Então, mesmo se você está apenas expondo alguns serviços da Web para construir um ambiente tranqüilo
aplicativo, seu servidor de aplicativos fará coisas para você, como
encaminhando solicitações para as classs corretas, traduzir consulta e postar
parâmetros em java – objects acessíveis por suas próprias classs respeitosamente
seus próprios objects e retornando sua resposta para os clientes.
O interessante é:
Os arquivos adicionais no web-archive são geralmente xml – arquivos e web –
arquivos relacionados, como html, css, js.
Então, isso não distingue a guerra da jarra como você também pode empacotar
resources adicionais dentro de um jar.
O requisito básico, mas agora obsoleto, de um arquivo de guerra é que ele contém
um descritor de implantação (que é novamente um arquivo xml)
configurar seu aplicativo, seu contexto e o URL relativo (mais concreto: url – patterns) que ele usa
mas, como esse requisito é obsoleto, alguém ainda pode pensar que essa distinção também é obsoleta.

Substitua as expressões leambda do seu código e tente novamente.

[EDITAR]

No meu caso. Eu tenho o projeto maven com o arquivo pom.xml

  4.0.0 test.ejb leambda-ejb 1.0-SNAPSHOT   javax javaee-api 7.0       org.apache.maven.plugins maven-compiler-plugin  1.8 1.8       

e um EJB com este conteúdo:

 package test.ejb; import javax.ejb.Singleton; /** * Created by me0x847206 on 10/29/15. */ @Singleton public class Test { public void test() { Thread thread = new Thread(new Runnable() { @Override public void run() { } }); } } 

Quando o artefato .jar é construído com o maven, ele é implementado com sucesso no servidor Glassfish 4.1.

Mas, se no Test EJB, Thread será criado com expressões leambda, como

  Thread thread = new Thread(() -> { }); 

, em implantar Glassfish mostrará a linha de erro:

  remote failure: Archive type of /mnt/2/Projects/IdeaProjects/TestEJB/target/leambda-ejb-1.0-SNAPSHOT.jar was not recognized Command deploy failed. 

e no arquivo server.log serão linhas:

  [2015-10-29T04:25:20.210+0200] [glassfish 4.1] [WARNING] [NCLS-DEPLOYMENT-00009] [javax.enterprise.system.tools.deployment.common] [tid: _ThreadID=44 _ThreadName=admin-listener(4)] [timeMillis: 1446085520210] [levelValue: 900] [[ Failed to scan archive for annotations: 1612]] [2015-10-29T04:25:20.211+0200] [glassfish 4.1] [SEVERE] [] [javax.enterprise.system.core] [tid: _ThreadID=44 _ThreadName=admin-listener(4)] [timeMillis: 1446085520211] [levelValue: 1000] [[ Archive type of /mnt/2/Projects/IdeaProjects/TestEJB/target/leambda-ejb-1.0-SNAPSHOT.jar was not recognized]]