Reputation: 1574
I try to make a rest web service with java and I use OpenShift service for testing server.
in OpenShift I choose Tomcat 7 (JBoss EWS 2.0) as web server.
when I'm tring to push my files in to server, in maven build time, it give me these errors:
remote: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project operatorrail: Compilation failure: Compilation failure:
remote: [ERROR] /var/lib/openshift/583387240c1e66c33cXXXXX/app-root/runtime/repo/src/main/java/RestApi/Tools/tools.java:[5,16] error: cannot find symbol
remote: [ERROR] package java.util
remote: [ERROR] /var/lib/openshift/583387240c1e66c33cXXXXX/app-root/runtime/repo/src/main/java/RestApi/Tools/tools.java:[35,25] error: cannot find symbol
remote: [ERROR] -> [Help 1]
remote: [ERROR]
remote: [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
remote: [ERROR] Re-run Maven using the -X switch to enable full debug logging.
remote: [ERROR]
remote: [ERROR] For more information about the errors and possible solutions, please read the following articles:
remote: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
remote: An error occurred executing 'gear postreceive' (exit code: 1)
remote: Error message: CLIENT_ERROR: Failed to execute: 'control build' for /var/lib/openshift/583387240c1e66c33cXXXXXX/jbossews
remote:
remote: For more details about the problem, try running the command again with the '--trace' option.
To ssh://XXXXXX-seyedaliroshan.rhcloud.com/~/git/restoprator.git/
2233024..a2c2911 master -> master
It seems like the errors are about my tools.java file.
so here is my tools.java file's codes:
package RestApi.Tools;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
/**
* @file tools.java
* @brief this file contains some hasher like MD5.
*
* @author Seyed Ali Roshan
*/
public class tools {
public String md5(String text) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(text.getBytes());
byte byteData[] = md.digest();
StringBuilder hexString = new StringBuilder();
for (int i=0;i<byteData.length;i++) {
String hex=Integer.toHexString(0xff & byteData[i]);
if(hex.length()==1) hexString.append('0');
hexString.append(hex);
}
return hexString.toString();
}
public String[] conventToUserPass(String text) {
String patternText = "(?i)Basic ";
String hashedString = text.replaceFirst(patternText, "");
byte[] unhased = Base64.getDecoder().decode(text);
String finalText = new String(unhased);
return finalText.split(":");
}
}
I wonder because when I use command mvn compile
in my PC there is no error and the project compile completely (without any error).
in errors there is a link -> https://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException which I didn't understand which point it's trying to say.
by the way I'm using netbeans as IDE and it's not recognizing any error in my code.
please help me.
Upvotes: 1
Views: 227
Reputation: 1574
in the first place, I have to thank Tome.
the problem is for java.util.Base64 (it's only for java 8).
I tried to change the default version of JDK in my cartridge to 1.8.0 (because it has it by default).
I used this tutorial JDK 8 support at DIY cartridge in OpenShift but it's not good enough for me.
I also change :
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
to :
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
but it cause some other errors.
so because I didn't have enough time , I just change my tools.java to :
package RestApi.Tools;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.glassfish.jersey.internal.util.Base64;
/**
* @file tools.java
* @brief this file contains some hasher like MD5.
* for decoding base 64 we had to use an library because java.util.Base64
* is for jdk 8 and our server working with jdk 7.
*
* @author Seyed Ali Roshan
*/
public class tools {
public String md5(String text) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(text.getBytes());
byte byteData[] = md.digest();
StringBuilder hexString = new StringBuilder();
for (int i=0;i<byteData.length;i++) {
String hex=Integer.toHexString(0xff & byteData[i]);
if(hex.length()==1) hexString.append('0');
hexString.append(hex);
}
return hexString.toString();
}
public String[] conventToUserPass(String text) {
String patternText = "(?i)Basic ";
String hashedString = text.replaceFirst(patternText, "");
byte[] unhased = Base64.decode(hashedString.getBytes());
String finalText = new String(unhased);
return finalText.split(":");
}
}
at the end I saw this : https://stackoverflow.com/a/32748828/6442877 and when I search about wildfly, I decide to use it in feature.
Upvotes: 1