今天面试题:求解!解决方法

今天面试题:求解!1.如何在java里使用c++代码?2.如何解决java.lang.NoClassDefFoundError运行错误?3.写一段

今天面试题:求解!
1.如何在java里使用c++代码?
2.如何解决java.lang.NoClassDefFoundError运行错误?
3.写一段代码,完成如下功能:读一个文件的全部内容,写到另一个文件中。(注意编码规范,注释方法,运行效率)。
4.java关于XML的开发包包括哪些?
5.写出您对JAVA设计和开发过程中的体会
6.软件工程管理的要点。


[解决办法]
1有以下几种情况我们需要使用JNI来实现。 

l 标准的java类库没有提供你的应用程序所需要的功能,通常这些功能是平台相关的 

l 你希望使用一些已经有的类库或者应用程序,而他们并非用java语言编写的

l 程序的某些部分对速度要求比较苛刻,你选择用汇编或者c语言来实现并在java语言中调用他们 

 

1.编写HelloWorld程序,由于涉及到要编写c/c++代码因此我们会在开发中使用Microsoft VC++工具。编写java代码,我们在硬盘上建立一个hello目录作为我们的工作目录,首先我们需要编写自己的java代码,在java代码中我们会声明native方法,代码非常简单。如下所示
class HelloWorld {
public native void displayHelloWorld();
static {
System.loadLibrary("hello");
}

public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}
注意我们的displayHelloWorld()方法的声明,它有一个关键字native,表明这个方法使用java以外的语言实现。方法不包括实现,因为我们要用c/c++语言实现它。注意System.loadLibrary("hello")这句代码,它是在静态初始化块中定义的,系统用来装载hello共享库,这就是我们在后面生成的hello.dll(如果在其他的操作系统可能是其他的形式,比如hello.so)
 2。编译java代码
javac HelloWorld.java 生成HelloWorld.class文件
3。创建.h文件
这一步中我们要使用javah命令生成.h文件,这个文件要在后面的c/c++代码中用到,我们运行
javah HelloWorld。这样我们可以看到在相同目录下生成了一个HelloWorld.h文件,文件内容如下
在此我们不对他进行太多的解释。
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: displayHelloWorld
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
 4。 编写本地实现代码
在这部分我们要用C/C++语言实现java中定义的方法,我们在VC++中新建一个Project,然后创建一个HelloWorldImp.cpp文件,内容如下
#include <jni.h>
#include "HelloWorld.h"
#include <stdio.h>

JNIEXPORT void JNICALL
Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf("Hello world!\n");
return;
}
注意我们这里include了 jni.h和刚才得到的HelloWorld.h文件。因此你要在VC++里面设置好,jni.h在JAVA_HOME/include里面。编译通过后再生成hello.dll文件。
5。 运行java程序
把上面生成的hello.dll文件复制到我们的工作目录,这时候我们的目录中包括HelloWorld.java,HelloWorld.class和hello.dll文件。运行java HelloWorld命令,则可在控制台看到Hello world|
的输出了。

 



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zealczg/archive/2007/12/29/2002738.aspx

[解决办法]
1、如果是在源码一级的话jdi最好,2进制之间的话进程间通信方式管道、socket等
2、属于classpath的问题,将所缺少的jar放进classpath就行了
3、
BufferedInputStream in = new BufferedInputStream(new FileInputStream("要读的文件"));
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("输出的文件"));
while(in.available()>0){
byte[] buff = new byte[512];
int len = in.read(buff);
out.write(buff,0,len);
}
out.close();
in.close();
4、面向dom树的方式和面向流的形式,如jdom

[解决办法]

探讨
1有以下几种情况我们需要使用JNI来实现。

l  标准的java类库没有提供你的应用程序所需要的功能,通常这些功能是平台相关的

l  你希望使用一些已经有的类库或者应用程序,而他们并非用java语言编写的

l  程序的某些部分对速度要求比较苛刻,你选择用汇编或者c语言来实现并在java语言中调用他们



  1.编写HelloWorld程序,由于涉及到要编写c/c++代码因此我们会在开发中使用Microsoft  VC++工具。编写java代码,我们在硬盘上建立一个hello目录作为我们的工作目录,首先我们需要编写自己的java代码,在java代码中我们会声明native方法,代码非常简单。如下所示 


  class  HelloWorld  { 
          public  native  void  displayHelloWorld(); 
          static  { 
                  System.loadLibrary("hello"); 
          } 
           
          public  static  void  main(String[]  args)  { 
                  new  HelloWorld().displayHelloWorld(); 
          } 
  } 
  注意我们的displayHelloWorld()方法的声明,它有一个关键字native,表明这个方法使用java以外的语言实现。方法不包括实现,因为我们要用c/c++语言实现它。注意System.loadLibrary("hello")这句代码,它是在静态初始化块中定义的,系统用来装载hello共享库,这就是我们在后面生成的hello.dll(如果在其他的操作系统可能是其他的形式,比如hello.so)   
2。编译java代码 
  javac  HelloWorld.java    生成HelloWorld.class文件   
3。创建.h文件 
  这一步中我们要使用javah命令生成.h文件,这个文件要在后面的c/c++代码中用到,我们运行 
  javah  HelloWorld。这样我们可以看到在相同目录下生成了一个HelloWorld.h文件,文件内容如下 
  在此我们不对他进行太多的解释。 
  /*  DO  NOT  EDIT  THIS  FILE  -  it  is  machine  generated  */ 
  #include  <jni.h> 
  /*  Header  for  class  HelloWorld  */ 
  #ifndef  _Included_HelloWorld 
  #define  _Included_HelloWorld 
  #ifdef  __cplusplus 
  extern  "C"  { 
  #endif 
  /* 
    *  Class:          HelloWorld 
    *  Method:        displayHelloWorld 
    *  Signature:  ()V 
    */ 
  JNIEXPORT  void  JNICALL  Java_HelloWorld_displayHelloWorld 
      (JNIEnv  *,  jobject); 
  #ifdef  __cplusplus 
  } 
  #endif 
  #endif   
4。 编写本地实现代码 
  在这部分我们要用C/C++语言实现java中定义的方法,我们在VC++中新建一个Project,然后创建一个HelloWorldImp.cpp文件,内容如下 
  #include  <jni.h> 
  #include  "HelloWorld.h" 
  #include  <stdio.h> 
   
  JNIEXPORT  void  JNICALL   
  Java_HelloWorld_displayHelloWorld(JNIEnv  *env,  jobject  obj)   
  { 
          printf("Hello  world!\n"); 
          return; 
  } 
  注意我们这里include了  jni.h和刚才得到的HelloWorld.h文件。因此你要在VC++里面设置好,jni.h在JAVA_HOME/include里面。编译通过后再生成hello.dll文件。   
5。  运行java程序 
  把上面生成的hello.dll文件复制到我们的工作目录,这时候我们的目录中包括HelloWorld.java,HelloWorld.class和hello.dll文件。运行java  HelloWorld命令,则可在控制台看到Hello  world| 
  的输出了。




本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zealczg/archive/2007/12/29/2002738.aspx


[解决办法]
1.如何在java里使用c++代码? 
 不会作,觉得应该在java底层里见过。
2.如何解决java.lang.NoClassDefFoundError运行错误?
找不到类?!?。。。继续找嘛。。。查一下是不是类路径写错了。 
3.写一段代码,完成如下功能:读一个文件的全部内容,写到另一个文件中。(注意编码规范,注释方法,运行效率)。 
mark...明天搞定。
4.java关于XML的开发包包括哪些? 
sax,jdom、dom,DOM4J
5.写出您对JAVA设计和开发过程中的体会 
跟着正常人的思路走,一般都能走通。程序拿数据要清楚它的来龙去脉,及数据类型。
6.软件工程管理的要点。
(一) 确定工作范围和资源
(二)成本估算
(三) 进度安排
(四) 软件开发组织