| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1468 人关注过本帖
标题:为什么我把java文件放在包里就运行不了
取消只看楼主 加入收藏
yaotoyao
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-7-10
收藏
 问题点数:0 回复次数:3 
为什么我把java文件放在包里就运行不了

我创建的一个NewJFrame.java 然后编译 运行都正常。
后来我把这个文件放在chinabanktwo这个文件夹下面,并且在NewJFrame.java 的头部加上package chinabanktwo;
然后再次编译运行,老是出现找不到main.class. 请问这是为什么?我主要是想打包后用exe4j把它弄成可执行文件。

//package chinabanktwo;
import java.util.Date;
import java.io.*;
//import chinabanktwo.*;

import java.util.*;
import java.text.*;


import java.text.SimpleDateFormat;/*
* NewJFrame.java
*
* Created on 2006年6月23日, 下午2:52
*/

/**
*
* @author Administrator
*/
public class NewJFrame extends javax.swing.JFrame {

/** Creates new form NewJFrame */
public NewJFrame() {
initComponents();
}

/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
private void initComponents() {
SimpleDateFormat simpleDate=new SimpleDateFormat("yyyyMMdd");//用来格式化日期
String today=(simpleDate.format(new Date())); //交易日期[yyyymmdd]
panel1 = new java.awt.Panel();
label1 = new java.awt.Label();
textField1 = new java.awt.TextField("d:\\chinabank\\readone\\"+today+".txt",35);
label3 = new java.awt.Label();
textField2 = new java.awt.TextField("d:\\chinabank\\bank\\"+today+".txt",35);
label2 = new java.awt.Label();
textField3 = new java.awt.TextField("d:\\chinabank\\write\\"+today+".txt",35);
button1 = new java.awt.Button();
setSize(300,650);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
label1.setText("\u6e90\u5730\u57401");
panel1.add(label1);

textField1.setColumns(30);
textField1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
textField1ActionPerformed(evt);
}
});

panel1.add(textField1);

label3.setText("\u6e90\u5730\u57402");
panel1.add(label3);

textField2.setColumns(30);
panel1.add(textField2);

label2.setText("\u76ee\u6807\u5730\u5740");
panel1.add(label2);

textField3.setColumns(30);
panel1.add(textField3);

button1.setLabel("\u8f6c\u6362");
button1.setName("button");
button1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
button1ActionPerformed(evt);
}
});
button1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
button1MouseClicked(evt);
}
});

panel1.add(button1);

getContentPane().add(panel1, java.awt.BorderLayout.CENTER);

pack();
}
// </editor-fold>//GEN-END:initComponents

private void textField1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_textField1ActionPerformed
// TODO 将在此处添加您的处理代码:
}//GEN-LAST:event_textField1ActionPerformed

private void button1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_button1ActionPerformed
// TODO 将在此处添加您的处理代码:
String str1=null,str2=null,str3=null;
str1=textField1.getText();
str2=textField2.getText();
str3=textField3.getText();
ReadWrite2 readWrite=new ReadWrite2(str1, str2,str3);
}//GEN-LAST:event_button1ActionPerformed

private void button1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_button1MouseClicked
// TODO 将在此处添加您的处理代码:
}//GEN-LAST:event_button1MouseClicked

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}

// 变量声明 - 不进行修改//GEN-BEGIN:variables
private java.awt.Button button1;
private java.awt.Label label1;
private java.awt.Label label2;
private java.awt.Label label3;
private java.awt.Panel panel1;
private java.awt.TextField textField1;
private java.awt.TextField textField2;
private java.awt.TextField textField3;
// 变量声明结束//GEN-END:variables

}
class ReadWrite2 {
/** Creates a new instance of ReadWrite */
String readUrl=null;//读取第一个文件地址
String readUrlbank=null;//读取第二个文件地址
String writeUrl=null;//写入文件地址
String space=" ";//定义26个空格用于补充空格
String files=null;//第一个文件名
String filesbank=null;//第二个文件名
// String[][] data=new String[100][5];//用来存放文件1.txt 中读出的所有字段
String Cname=null;//第二个文件银行回盘记录中客户姓名
String money=null;//第二个文件银行实扣金额
String ee=null;//第二个文件银行返回码
String eol="\r\n";//回车换行
String threeLine=null;//用来存放将要写入文件的数据行的所有字段
String TotalLine=null;//汇总行
int totalMoney=0;

public ReadWrite2(String readUrl,String readUrlbank,String writeUrl) {
try{
File read=new File(readUrl);
File readbank=new File(readUrlbank);
files=read.getName(); //获取第一个文件名
filesbank=readbank.getName(); //获取第二个文件名
this.readUrl=read.getAbsolutePath();//获取第一个文件路径
this.readUrlbank=readbank.getAbsolutePath();//获取第二个文件路径
this.writeUrl=writeUrl; //将函数参数中写入地址传进来
System.out .println("this.readUrl=="+this.readUrl) ;
System.out .println("this.readUrlbank=="+this.readUrlbank) ;
System.out .println("this.writeUrl=="+this.writeUrl) ;
System.out .println("filesbank=="+filesbank) ;
System.out .println("readUrl+files=="+readUrl+"\\"+files) ;

} catch(Exception e) {
System.out.println("输入输出错误!"+e);
}

try{
FileReader inputFile=null;
FileWriter outputFile=null;

// String today=null;
String strReadLine=null;//用来存放读出的每一行
// StringBuffer str1=new StringBuffer(); //用来存放去掉空格以后的每一行数据

//SimpleDateFormat simpleDate=new SimpleDateFormat("yyyyMMdd");//用来格式化日期
// String today=(simpleDate.format(new Date())); //交易日期[yyyymmdd]
StringTokenizer tokenizer1=null;
String[] tokenizer1_fields=null;//用存放读出来的每一个字段
BufferedReader bufferedInputFile=null;//缓冲
BufferedWriter bufferedOutputFile=null;
int m; // m用到每一行中的哪一个字段
// outputFile=new FileWriter(writeUrl);//转换后须准备写入的文件

inputFile=new FileReader(readUrl);//准备读取的文件

// bufferedOutputFile=new BufferedWriter(outputFile);//缓冲
bufferedInputFile=new BufferedReader(inputFile);

tokenizer1_fields=new String[5];//每行5个字段
int x;
int j;//用于比较流水号时候
//int Seqno=0; //顺序号
int Acno=0;//总笔数
while((strReadLine=bufferedInputFile.readLine())!=null){ //读取文件中的每一行

System.out.println(strReadLine);
Acno++;
}
Acno--;//所读取文件最后一行为汇总行所以总笔数减一
System.out.println(Acno);
bufferedInputFile.close();//关闭文件以便定位读取口,这一步需要改进

Vector vector=new Vector();//用来存放文件1.txt 中读出的所有字段
inputFile=new FileReader(readUrl);//准备读取的文件
bufferedInputFile=new BufferedReader(inputFile);
int kk=1;//用来判断行数
while((strReadLine=bufferedInputFile.readLine())!=null&&kk<=Acno){ //读取文件中的每一行
tokenizer1=new StringTokenizer(strReadLine);
for( x=0;tokenizer1.hasMoreTokens();x++){
tokenizer1_fields[x]=tokenizer1.nextToken();
vector.addElement(tokenizer1_fields[x]);

}
kk++;
}

for(int ss=0;ss<vector.size();ss++){
System.out.println(vector.elementAt(ss)+"呵呵");
}


bufferedInputFile.close();//关闭文件
inputFile=new FileReader(readUrlbank);//打开准备读取的文件
bufferedInputFile=new BufferedReader(inputFile);
outputFile=new FileWriter(writeUrl);//转换后须准备写入的文件
bufferedOutputFile=new BufferedWriter(outputFile);//缓冲
int y=1;
totalMoney=0;//总金额置零

int sjbs=0;//实际笔数改改改改改改改改改改改改改改改

while((strReadLine=bufferedInputFile.readLine())!=null&&kk!=0){ //读取文件中的每一行改改改改改改改改改改
kk--;
// accno=strReadLine.substring(22,40);
// money=strReadLine.substring(51,62);
// ee=strReadLine.substring(74,75);
// System.out.println("accno="+accno);
// System.out.println("money="+money);
//System.out.println("ee="+ee);

if(y!=1){//去掉银行回盘也就是文件二中第一行
Cname=strReadLine.substring(17,22);
money=strReadLine.substring(51,62);

totalMoney=totalMoney+Integer.parseInt(money); //改改改改改改改改改改改改改改改
ee=strReadLine.substring(74,75);
System.out.println("Cname="+Cname);
System.out.println("money="+money);
System.out.println("ee="+ee);

int k=1;
for(;Cname.equals((String)vector.elementAt((k-1)*5))==false&&k<=Acno;k++) {
System.out.println((String)vector.elementAt((k-1)*5));
}
if(Cname.equals((String)vector.elementAt((k-1)*5))) {
sjbs++;
threeLine=(String)vector.elementAt((k-1)*5)+(String)vector.elementAt((k-1)*5+1)+(String)vector.elementAt((k-1)*5+2)+(""+money)+(String)vector.elementAt((k-1)*5+4)+(""+ee)+eol;
System.out.println(threeLine);
System.out.println("totalMoney"+totalMoney);
bufferedOutputFile.write(threeLine);
bufferedOutputFile.flush();

}
}

y++;

}

TotalLine="HZ"+space.substring(0,5-(""+sjbs).toString().length())+sjbs+space.substring(0,11-(""+totalMoney).toString().length())+totalMoney;//改改改改改改改改改改改改改改改
System.out.println(TotalLine);
bufferedOutputFile.write(TotalLine);
bufferedOutputFile.flush();
bufferedInputFile.close();//关闭文件
}catch(Exception e){
System.out.println(e);
}
}


}

搜索更多相关主题的帖子: java import 文件 chinabanktwo util 
2006-07-13 16:52
yaotoyao
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-7-10
收藏
得分:0 

用jbuild2006写的,我看了exe4j的说明,需要一个可执行的jar文件用来转换,并且需要一个manifest.mf 文件用来寻找main.class,如果直接用java中的jar命令 ,那么打包成.exe后找不到main.class。 运行不了,
为了写manifest.mf我需要把NewJFrame.java生成的所有类都放在同一个文件夹下,所以就想用package来。可是一加到NewJFrame.java头部,编译后,运行就出错,找不到类,我真的不明白为什么 放到包里会找不到类,。 。

2006-07-13 19:37
yaotoyao
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-7-10
收藏
得分:0 

因为生成好几个.class文件,为了把他们放在一块,所以就把他们都放在chinabanktwo文件中,一旦加上package chinabanktwo;这一句后就运行出现问题,显示如图片所示。
不知道还有什么好办法,可以生成.exe文件。网络上介绍最火的就是exe4j可是在生成jar文件是老是出错。马的!

[IMG]D:\My Documents\My Pictures\java.bmp[/IMG]
2006-07-13 20:38
yaotoyao
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-7-10
收藏
得分:0 
谢谢版主的关注,问题解决了,加上package chinabanktwo后,运行单个.class文件会出错,不过打包成.jar文件就不会出错了。再次谢谢大家的关注!
2006-07-18 08:53
快速回复:为什么我把java文件放在包里就运行不了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035635 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved