HI,Everyone!我在学习ejb的时候遇到一个很令人困惑的问题,向各位求教,写得很多但都是一个相关的问题,相信对你们懂得人来说是小菜一碟
首先说一下开发环境我安装的是jdk1.6,JBOSS也是下的对应jdk1.6的JBOSS_4.2.3的版本
在myeclipse中使用用的JRE System Libraries[javaSE-1.6]版本,也就是我安装的那个JDK
--ps:我没有安装j2ee sdk
然后我建了一个java项目(注:不是EJB项目)-----------------------------------------定义了一个接口
package com.hi.ejb3;public interface HelloWorld {
public String sayHello(String name);
}----------------------------------------------实现类
package com.hi.ejb3.impl;import javax.ejb.Remote;
import javax.ejb.Stateless;import com.hi.ejb3.HelloWorld;@Stateless
@Remote(HelloWorld.class)
public class HelloWorldBean implements HelloWorld { @Override
public String sayHello(String name) {
return name + "*******你好,美丽世界*******";
}
}
---------------------------------------------客户端调用
package com.hi.ejb3.test;import java.util.Properties;import javax.naming.InitialContext;
import javax.naming.NamingException;import com.hi.ejb3.HelloWorld;public class EJBHelloWorldClient { /**
* @param args
*/
public static void main(String[] args) {
Properties pros = new Properties();
pros.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
pros.setProperty("java.naming.provider.url","localhost:1099");
try {
InitialContext initialContext = new InitialContext(pros);
HelloWorld helloWorld = (HelloWorld)initialContext.lookup("HelloWorldBean/remote");
System.out.println(helloWorld.sayHello("张飞:"));
// 查看代理服务器的类名
System.out.println(helloWorld.getClass().getName());
} catch (NamingException e) {
e.printStackTrace();
}
}
}
=========================我通过运行EJBHelloWorldClient可以正常运行,以下是正常打印的信息
张飞:*******你好,美丽世界*******???????????????????????????????????????????????????????
当我通过ant来组织调用(建立路径,编译,打包,发布,移除)的时候
以下悲剧发生了,下面是控制台的打印信息
Buildfile: D:\MyEclipseWorkSpace\ejb\HelloWorld\build.xml
prepare:
[delete] Deleting directory D:\MyEclipseWorkSpace\ejb\HelloWorld\build
[mkdir] Created dir: D:\MyEclipseWorkSpace\ejb\HelloWorld\build
compile:
[javac] Compiling 4 source files to D:\MyEclipseWorkSpace\ejb\HelloWorld\build
[javac] D:\MyEclipseWorkSpace\ejb\HelloWorld\src\com\hi\ejb3\impl\HelloWorldBean.java:3: 软件包 javax.ejb 不存在
[javac] import javax.ejb.Remote;
[javac] ^
[javac] D:\MyEclipseWorkSpace\ejb\HelloWorld\src\com\hi\ejb3\impl\HelloWorldBean.java:4: 软件包 javax.ejb 不存在
[javac] import javax.ejb.Stateless;
[javac] ^
[javac] D:\MyEclipseWorkSpace\ejb\HelloWorld\src\com\hi\ejb3\impl\HelloWorldBean.java:8: 找不到符号
[javac] 符号: 类 Stateless
[javac] @Stateless
[javac] ^
[javac] D:\MyEclipseWorkSpace\ejb\HelloWorld\src\com\hi\ejb3\impl\HelloWorldBean.java:9: 找不到符号
[javac] 符号: 类 Remote
[javac] @Remote(HelloWorld.class)
[javac] ^
[javac] 4 错误BUILD FAILED
D:\MyEclipseWorkSpace\ejb\HelloWorld\build.xml:22: Compile failed; see the compiler error output for details.Total time: 1 second
---------------------------------------------------------------------------------------------
1.我也在网上查了一下,有很多人说下一个java ee sdk 就可以了,我昨天也去下了,不过安装到一半的时候死机了。所以也没有装j2ee sdk
今天又删了原来的java ee sdk安装目录,但是重新安装装不上去了。不知是为什么?
2.我很奇怪,我为什么不用ant能编译,通过ant就不能编译呢(这样就不是安不安装j2ee sdk的问题了吧?)?
3.我练习过一些web项目但重来没有装过java ee sdk,一般在搞哪些开发的时候需要安装j2ee sdk呢?
4.我使用的开发工具是myeclipse 7.0,里面有个JAVA EE 5 Libareries,是不是用它就可以不安转java ee sdk呢?
5.怎么会提示 “软件包 javax.ejb 不存在 找不到符号”?
首先说一下开发环境我安装的是jdk1.6,JBOSS也是下的对应jdk1.6的JBOSS_4.2.3的版本
在myeclipse中使用用的JRE System Libraries[javaSE-1.6]版本,也就是我安装的那个JDK
--ps:我没有安装j2ee sdk
然后我建了一个java项目(注:不是EJB项目)-----------------------------------------定义了一个接口
package com.hi.ejb3;public interface HelloWorld {
public String sayHello(String name);
}----------------------------------------------实现类
package com.hi.ejb3.impl;import javax.ejb.Remote;
import javax.ejb.Stateless;import com.hi.ejb3.HelloWorld;@Stateless
@Remote(HelloWorld.class)
public class HelloWorldBean implements HelloWorld { @Override
public String sayHello(String name) {
return name + "*******你好,美丽世界*******";
}
}
---------------------------------------------客户端调用
package com.hi.ejb3.test;import java.util.Properties;import javax.naming.InitialContext;
import javax.naming.NamingException;import com.hi.ejb3.HelloWorld;public class EJBHelloWorldClient { /**
* @param args
*/
public static void main(String[] args) {
Properties pros = new Properties();
pros.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
pros.setProperty("java.naming.provider.url","localhost:1099");
try {
InitialContext initialContext = new InitialContext(pros);
HelloWorld helloWorld = (HelloWorld)initialContext.lookup("HelloWorldBean/remote");
System.out.println(helloWorld.sayHello("张飞:"));
// 查看代理服务器的类名
System.out.println(helloWorld.getClass().getName());
} catch (NamingException e) {
e.printStackTrace();
}
}
}
=========================我通过运行EJBHelloWorldClient可以正常运行,以下是正常打印的信息
张飞:*******你好,美丽世界*******???????????????????????????????????????????????????????
当我通过ant来组织调用(建立路径,编译,打包,发布,移除)的时候
以下悲剧发生了,下面是控制台的打印信息
Buildfile: D:\MyEclipseWorkSpace\ejb\HelloWorld\build.xml
prepare:
[delete] Deleting directory D:\MyEclipseWorkSpace\ejb\HelloWorld\build
[mkdir] Created dir: D:\MyEclipseWorkSpace\ejb\HelloWorld\build
compile:
[javac] Compiling 4 source files to D:\MyEclipseWorkSpace\ejb\HelloWorld\build
[javac] D:\MyEclipseWorkSpace\ejb\HelloWorld\src\com\hi\ejb3\impl\HelloWorldBean.java:3: 软件包 javax.ejb 不存在
[javac] import javax.ejb.Remote;
[javac] ^
[javac] D:\MyEclipseWorkSpace\ejb\HelloWorld\src\com\hi\ejb3\impl\HelloWorldBean.java:4: 软件包 javax.ejb 不存在
[javac] import javax.ejb.Stateless;
[javac] ^
[javac] D:\MyEclipseWorkSpace\ejb\HelloWorld\src\com\hi\ejb3\impl\HelloWorldBean.java:8: 找不到符号
[javac] 符号: 类 Stateless
[javac] @Stateless
[javac] ^
[javac] D:\MyEclipseWorkSpace\ejb\HelloWorld\src\com\hi\ejb3\impl\HelloWorldBean.java:9: 找不到符号
[javac] 符号: 类 Remote
[javac] @Remote(HelloWorld.class)
[javac] ^
[javac] 4 错误BUILD FAILED
D:\MyEclipseWorkSpace\ejb\HelloWorld\build.xml:22: Compile failed; see the compiler error output for details.Total time: 1 second
---------------------------------------------------------------------------------------------
1.我也在网上查了一下,有很多人说下一个java ee sdk 就可以了,我昨天也去下了,不过安装到一半的时候死机了。所以也没有装j2ee sdk
今天又删了原来的java ee sdk安装目录,但是重新安装装不上去了。不知是为什么?
2.我很奇怪,我为什么不用ant能编译,通过ant就不能编译呢(这样就不是安不安装j2ee sdk的问题了吧?)?
3.我练习过一些web项目但重来没有装过java ee sdk,一般在搞哪些开发的时候需要安装j2ee sdk呢?
4.我使用的开发工具是myeclipse 7.0,里面有个JAVA EE 5 Libareries,是不是用它就可以不安转java ee sdk呢?
5.怎么会提示 “软件包 javax.ejb 不存在 找不到符号”?
解决方案 »
- 冒昧问一下,J2EE开发环境,大家一般喜欢是在WINDOWS上开发还是在Linux下开发
- 请问AJAX的xmlHttp.open("post",null,true)问题
- 谁能给我讲讲soa如何学
- javascript 或 vbscript 操作 word2003菜单方法
- the selection did not contain anything that can be run on a server
- 获取短信字符的数据结构
- 使用Hibernate出现的中文问题,求教,急。。。。
- 关于J2EE 下打开j2ee server的奇怪问题
- 突然发现:这里的论坛程序实在是太烂!!
- Mybatis映射
- 请问高手:WSDL 到 Java Bean 代理向导如何用啊?
- 怎样实现二叉树的问题
应该不是jdk的问题,因为在不用ant编译,手动编译运行都没有问题
<fileset dir="${jboss.home}/client">
<include name="*.jar" />
</fileset>
<pathelement location="${build.dir}" />
</path>
编译 <target name="compile" depends="prepare" description="编译">
<javac srcdir="${src.dir}" destdir="${build.dir}" includes="entity/**,session/**">
<classpath refid="build.classpath" />
</javac>
</target>
是不是complier版本问题你查看下工程属性Property---Java Complier---Level ---- 1.5+?或者你的buildPath是不是用的1.5+的Jdk