可以用相对路径的。
你看看你的相对路径写对了么?
相对于你这个.class来说。

解决方案 »

  1.   

    好的 我马上就去调试.谢谢 三毛 和Geniusth(I'm just a Fool) 
    三毛说的我试过了,不行!!!!
    Geniusth(I'm just a Fool) 说的好像也不行!!
    你们可以调试一下!
      

  2.   

    FileInputStream fis = new FileInputStream(filename);//
    这个并不需要一定是绝对路径的。你把这个类文件和图片放在一起,然后TMP_FILE="map20.jpg";也行的。
    相对路径时,往往是一个.或者是“/”的差异,细心找问题吧。或者把你的路径信息写出来
      

  3.   

    是不是你的java运行路径的问题。java中文件的相对路径是可以的,但是相对路径是相对于你的java.exe/javaw.exe运行起始位置的,比如: d:\tmp\java -cp . xxx 那么在当前进程中的文件相对路径都是相对于d:\tmp的。
      

  4.   

    相对路径应该相对于System.getProperty("user.dir");你确定没错吗?
      

  5.   

    binny(骑个破车看夕阳)说得没错,程序运行的起始位置将会作为System的参数存放到user.dir key中,还有其他很多参数也存放到其他的key中,如:user.home等。
      

  6.   

    import java.applet.Applet;
    import java.awt.Graphics;
    import javax.print.*;
    import javax.print.attribute.*;
    import javax.print.attribute.standard.*;
    import java.io.*;
    import java.awt.Image;
    import java.awt.MediaTracker;public class PrintFileTest extends Applet {
       String imageFile;
        String imageFile1;
        Image image;
        Image image1;
        Image img;
        public void init() {
        imageFile = getParameter("picture");
        imageFile1 = getParameter("picture1");    image = getImage(getDocumentBase(),imageFile); image1 = getImage(getDocumentBase(),imageFile1);    prepareImage(image,this);
        prepareImage(image1,this);    MediaTracker tracker = new MediaTracker(this);
        tracker.addImage(image,0);
        tracker.addImage(image1,0);    try{
          tracker.wait(0);
        }catch(Exception ignore){    }
        }    public void start() {
           printMap();
        }    public void stop() {
          // printMap();
        }    public void destroy() {    }
        public void paint(Graphics g) {
           g.drawImage(image1,0,0,this);       
        }    public void printMap(){
            
            String filename = imageFile;
            PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();        DocFlavor flavor = DocFlavor.INPUT_STREAM.JPEG;        PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
            PrintService defaultService =   PrintServiceLookup.lookupDefaultPrintService();
            PrintService service = ServiceUI.printDialog(null, 200, 200,printService, defaultService, flavor, pras);
            if (service != null) {
              try
              {            DocPrintJob job = service.createPrintJob();
                FileInputStream fis = new FileInputStream(filename);
                DocAttributeSet das = new HashDocAttributeSet();            Doc doc = new SimpleDoc(fis, flavor, das);
               // PageFormat format = job.pageDialog(attributes);
                job.print(doc, pras);
              }
              catch(Exception e)
              {
                e.printStackTrace();
              }
            }
        }
    }
    <html>
    <head>
    <title>test applet</title>
    </head>
    <body>
    <br>
    <applet
      code     = "PrintFileTest.class"  
      archive="print.jar"
      name     = "hello" 
      width    = "500"
      height   = "400"
      hspace   = "0"
      vspace   = "0"
      align    = "center"
    >
    <param name="picture"  value="0519/666.jpg">//用来打印的
    <param name="picture1"  value="0519/666.jpg"">//用来显示的
    </applet>
    </body>
    </html>
    这是很完整的程序! PrintFileTest.class 和HTML文件放在./文件夹下面,而666.jpg放在./0519下面.
    当运行这个*.html文件时上面可以显示666.jpg文件,可是不能把这个文件打印出来
    当你把<param name="picture"  value="0519/666.jpg">改为<param name="picture"  value="D:/./0519/666.jpg">时就可以打印出来!
    大家发表意见吧!!!数字签名我做完了!谢谢指点