1

I'm using BASE64Encoder of Sun Micro Systems to convert image to Base64 string. The problem is that I'm getting warnings during build which I don't want

Java Code..

     public static String encodeToString(BufferedImage image, String type) {
    String base64String = null;
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    try {
    ImageIO.write(image, type, bos);
    byte[] imageBytes = bos.toByteArray();
    BASE64Encoder encoder = new BASE64Encoder();
    base64String = encoder.encode(imageBytes);
    bos.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return base64String;
    }

Warnings:

  [javac] /Users/lucy/dev/workspace/flsv2/src/util/BufferImage.java:53: warning: BASE64Encoder is internal proprietary API and may be removed in a future release 
  [javac] BASE64Encoder encoder = new BASE64Encoder(); 
  [javac] ^ 
  [javac] /Users/lucy/dev/workspace/flsv2/src/util/BufferImage.java:53: warning: BASE64Encoder is internal proprietary API and may be removed in a future release 
  [javac] BASE64Encoder encoder = new BASE64Encoder(); 
  [javac] ^ 
  [javac] 2 warnings

Is there a way to use Apache Commons in the above method so that no warnings are generated? Please Help..

Lucy
  • 1,812
  • 15
  • 55
  • 93

1 Answers1

4

Please do not use internal com.sun.* packages. If you are on v6 or greater you can use DatatypeConverter. Then your code will be look like below.

String base64String = DatatypeConverter.printBase64Binary(baos.toByteArray());
byte[] bytearray = DatatypeConverter.parseBase64Binary(base64String);

Or,

You can also use: java.util.Base64 which is added in Java 1.8

String base64String = new String(Base64.getEncoder().encode(bytesToEncode));
byte[] decordedValue = Base64.getDecoder().decode(base64String);

Or, you can make a method calling procedure in apache commons that is given below

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.StringUtils;

public String decode(String s) {
    return StringUtils.newStringUtf8(Base64.decodeBase64(s));
}
public String encode(String s) {
    return Base64.encodeBase64String(StringUtils.getBytesUtf8(s));
}

Resource Link:

  1. org.apache.commons.codec.binary.base64 Example
  2. how to avoid warning for the Base 64?
Community
  • 1
  • 1
SkyWalker
  • 28,384
  • 14
  • 74
  • 132