我对java有一个奇怪的问题 - 我在Intellij Idea中编程,我使用这个小代码对网站进行基本授权
String authString = name + ":" + password;
byte[] binaryData = authString.getBytes();
String authStringEnc = new String(Base64.encodeBase64(binaryData));
URL url = new URL(webPage);
URLConnection urlConnection = url.openConnection();
urlConnection.setRequestProperty("Authorization", "Basic " + authStringEnc);
InputStream is_auth = urlConnection.getInputStream();
InputStreamReader isr = new InputStreamReader(is_auth);
这段代码工作了几个星期,但我继续编写我的程序。然后昨天我看到 - 当我在Intellij中单击运行时程序有效,但是当我启动.jar文件时,这行不能完成:
String authStringEnc = new String(Base64.encodeBase64(binaryData));
我不知道为什么,但程序在执行此行时会停止。但是当我在Intellij中单击运行或调试时,一切正常。
顺便说一下。我正在将此库用于encodeBase64:
import org.apache.commons.codec.binary.Base64;
如果您不知道为什么它不起作用,也许您可以与我分享想要对网站进行基本授权。提前谢谢。
答案 0 :(得分:2)
您需要将Apache Commons Codec jar添加到classpath when you run the jar file。您应该确保在IntelliJ中添加的任何其他jar文件/库也在类路径中。
答案 1 :(得分:0)
您应该使用日志记录来研究堆栈跟踪。可能你有一些ClassNotFound异常或同样明显的东西。
答案 2 :(得分:0)
答案是: 我只需要刷新jar工件。我删除了旧的工件并再次创建它,之后一切运行良好。