【问题标题】:Java. Compile/Execute 2 .java 1 package command line爪哇。编译/执行 2 .java 1 包命令行
【发布时间】:2014-05-29 16:57:44
【问题描述】:

这是我的两个.java,第一个:

package net.utils.image;

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

import javax.imageio.ImageIO;

public class BufferedImageSplitter {

    protected BufferedImage image;
    protected BufferedImage[] splittedImages;

     public static BufferedImageSplitter getInstance( String path ) throws IOException, FileNotFoundException {
        File file = new File( path );  
        FileInputStream fis = new FileInputStream(file);
        return new BufferedImageSplitter( fis );
    }

    public BufferedImageSplitter(InputStream image) throws IOException {
        this.image = ImageIO.read(image);
    }

    public BufferedImageSplitter(FileInputStream image) throws IOException {
        this.image = ImageIO.read(image);
    }

    public BufferedImageSplitter(File image) throws IOException {
        this.image = ImageIO.read( image );
    }

    public BufferedImageSplitter(URL image) throws IOException {
        this.image = ImageIO.read( image );
    }

    public BufferedImage[] split(int height) {
        int width = this.image.getWidth();
        int rows = (int) Math.ceil( (float) this.image.getHeight() / (float) height );

        this.splittedImages = new BufferedImage[rows]; // Image array to hold
                                                        // image chunks
        for (int count = 0; count < rows; count++) {
            Graphics2D gr = null;
            int minHeightOffset = height * count;
            int maxHeightOffset = Math.min( image.getHeight() , height * count + height );
            int splitHeight = maxHeightOffset - minHeightOffset;

            // Initialize the image array with image chunks
            this.splittedImages[count] = new BufferedImage(width, splitHeight,
                    this.image.getType());

            // draws the image chunk
            gr = this.splittedImages[count].createGraphics();
            gr.drawImage(this.image, 0, 0, width, splitHeight, 0,
                    minHeightOffset, width, maxHeightOffset, null);
            gr.dispose();

        }
        return this.splittedImages;
    }

    public void saveFiles(String FormatName, String ImageName ) throws IOException {

        //writing mini images into image files  
        for (int i = 0; i < this.splittedImages.length; i++) {  

            String padding = String.format("%03d", i);


            ImageIO.write(this.splittedImages[i], FormatName, new File( ImageName + padding + "." + FormatName));  
        }
    }

}

第二个包含主类:

package net.utils.image;

import java.io.*;

public class MainSplitter {
    public static void main(String[] args) throws IOException {

        // File file = new
        // File("C:\\Documents and Settings\\Administrador\\Mis documentos\\b12.png");
        // FileInputStream fis = new FileInputStream(file);
        // BufferedImageSplitter imageSplitter = new BufferedImageSplitter(fis);

        if (args.length != 3) {

            System.out.println("Parametros incorrectos. Inserta"
                    + " <path imagen> <formato imagen> <nombre imagen>");
            System.exit(0);

        }

        String path_img = args[0];

        String format = args[1];

        String name_img = args[2];

        BufferedImageSplitter imageSplitter = BufferedImageSplitter
                .getInstance(path_img);
        imageSplitter.split(500);
        imageSplitter.saveFiles(format, name_img);

    }
}

这是我迄今为止尝试过的,但没有成功:

我的文件结构是:/root,我有两个 .java

1) 1.1 javac *.java (编译正确) 1.2 java MainSplitter 线程“main”中的异常 java.lang.NoClassDefFoundError: MainSplitter(错误名称:net/utils/image/MainSplitter)

2) 2.1 javac -cp 。 *.java 2.2 java cp 。 *.java
又是同样的错误

3) 3.1 javac *.java 3.2 java java net.utils.image.MainSplitter.main 错误:无法找到或加载主类 net.utils.image.MainSplitter.main

4)我已经对文件进行了重组,并将两个 .java 都放在了这个目录中:root/net/utils/image 然后:

4.1 javac -cp 。 *Java 爪哇-cp。主分配器 再次出现第一个错误:线程“main”中的异常 java.lang.NoClassDefFoundError: MainSplitter(错误名称:net/utils/image/MainSplitter)。

我可能对 cp 有问题但不知道,可能很容易但我卡住了,无法执行。 提前谢谢你,我会很感激任何帮助

【问题讨论】:

    标签: java compilation packages execution


    【解决方案1】:

    您的 java 文件需要位于反映包名称的目录中:

    net/utils/image/MainSplitter.java
    
    $ javac net/utils/image/*.java
    
    $ java -cp . net.utils.image.MainSplitter
    

    【讨论】:

    • 真的非常感谢你,我已经做到了,它从根目录开始工作。 -cp 。有效,因为它适用于我在当前目录中的 .class 不是吗?再次感谢您
    【解决方案2】:

    你好,你先编译MainSplitter。 然后检查你有相同的包来保存你的两个类。 我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-16
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 2013-12-26
      • 1970-01-01
      相关资源
      最近更新 更多