当实例化一个新的URL时,来自DrawImage类的下面的第一个代码块起作用。
但是,当我从另一个类RandomImage输入相同的String(“ https://www.purchased.com/hubfs/template/favicon.png”)时,出现以下错误:

我首先尝试手动输入String。

import java.awt.Image;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class DrawImage {

  public static void main(String[] args) throws Exception {
    String link = "https://www.purchased.com/hubfs/template/favicon.png";
    System.setProperty("http.agent", "Chrome");
    URL url = new URL(link);
    Image image = ImageIO.read(url.openStream());

  }
}


->按预期工作

然后,我更改为提供一个RandomImage(这是产生错误消息的代码!)

import java.awt.Image;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class DrawImage {

  public static void main(String[] args) throws Exception {
    RandomImage img = new RandomImage();
    String link = img.link;
    System.setProperty("http.agent", "Chrome");
    URL url = new URL(link);
    Image image = ImageIO.read(url.openStream());

  }
}


以下类提供随机图像:

import java.net.*;
import java.io.*

public class RandomImage {
  public static String link;

  public RandomImage() throws Exception {
    this.link = generateUsableImageLink();
  }


但是在运行第二种方法时,出现以下错误:

java.net.MalformedURLException: no protocol: "https://www.purchased.com/hubfs/template/favicon.png"
    at java.net.URL.<init>(Unknown Source)
    at java.net.URL.<init>(Unknown Source)
    at java.net.URL.<init>(Unknown Source)
    at DrawImage.main(DrawImage.java:25)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:267).


我尝试(如您在上面的代码中看到的)使RandomImage成为对象,但是错误提要告诉我,当我使用RandomImage的输入创建URL实例时发生错误。

如果我猜的话,这个问题是由导入的软件包之间的某些交互作用或RandomImage中引发的错误引起的。逐个字符,我手动输入的字符串和RandomImage生成的字符串是相同的。我将如何解决这个问题?

最佳答案

方法generateUsableImageLink生成带引号的字符串。
更改此方法,以便它不会在字符串上加上引号。

10-04 16:16