Java-从另一个类输入String时,出现MalformedURLException,但是在粘贴相同的String时,则不是

时间:2019-07-13 19:18:54

标签: java url

实例化一个新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生成的字符串是相同的。我将如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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