我正在尝试构建一个简单的java spring项目,我得到的设置包含我的hibernate .hbm映射,每个映射的POJO和一个看起来像这样的SimpleFormController类:
package com.jr.user.controller;
import org.springframework.web.portlet.mvc.SimpleFormController;
public class RegisterNewUser extends SimpleFormController{
}
它是空的,你可以看到,但当我尝试构建它时,我得到以下错误:
建立失败 C:\ Users \用户XXXXXXXXXXXXX \工作\在线 赛车联盟\ build.xml:45:无法 找到一个javac编译器; com.sun.tools.javac.Main不在 类路径。也许JAVA_HOME没有 指向JDK。它目前已设置
到“C:\ Program Files(x86)\ Java \ jre6”
总时间:237毫秒
另外,奇怪的是,上面代码中的包装行以红色下划线突出显示,表示语法或代码错误,当我将鼠标移到该行时,这就是它所说的:
javax.portlet.PortletContext类型 无法解决。这是间接的 从必需的.class文件中引用
我的build.xml如下所示:
<?xml version="1.0"?>
<project name="Online Racing League" basedir="." default="usage">
<property file="build.properties"/>
<property name="src.dir" value="src"/>
<property name="web.dir" value="war"/>
<property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
<property name="name" value="Online Racing League"/>
<path id="master-classpath">
<fileset dir="${web.dir}/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
<!-- We need the servlet API classes: -->
<!-- * for Tomcat 5/6 use servlet-api.jar -->
<!-- * for other app servers - check the docs -->
<fileset dir="${appserver.lib}">
<include name="servlet*.jar"/>
</fileset>
<pathelement path="${build.dir}"/>
</path>
<target name="usage">
<echo message=""/>
<echo message="${name} build file"/>
<echo message="-----------------------------------"/>
<echo message=""/>
<echo message="Available targets are:"/>
<echo message=""/>
<echo message="build --> Build the application"/>
<echo message="deploy --> Deploy application as directory"/>
<echo message="deploywar --> Deploy application as a WAR file"/>
<echo message="install --> Install application in Tomcat"/>
<echo message="reload --> Reload application in Tomcat"/>
<echo message="start --> Start Tomcat application"/>
<echo message="stop --> Stop Tomcat application"/>
<echo message="list --> List Tomcat applications"/>
<echo message=""/>
</target>
<target name="build" description="Compile main source tree java files">
<mkdir dir="${build.dir}"/>
<javac destdir="${build.dir}" source="1.5" target="1.5" debug="true"
deprecation="false" optimize="false" failonerror="true">
<src path="${src.dir}"/>
<classpath refid="master-classpath"/>
</javac>
</target>
<target name="deploy" depends="build" description="Deploy application">
<copy todir="${deploy.path}/${name}" preservelastmodified="true">
<fileset dir="${web.dir}">
<include name="**/*.*"/>
</fileset>
</copy>
</target>
<target name="deploywar" depends="build" description="Deploy application as a WAR file">
<war destfile="${deploy.path}/${name}.war"
webxml="${web.dir}/WEB-INF/web.xml">
<fileset dir="${web.dir}">
<include name="**/*.*"/>
</fileset>
</war>
<copy todir="${deploy.path}" preservelastmodified="true">
<fileset dir=".">
<include name="*.war"/>
</fileset>
</copy>
</target>
<!-- ============================================================== -->
<!-- Tomcat tasks - remove these if you don't have Tomcat installed -->
<!-- ============================================================== -->
<path id="catalina-ant-classpath">
<!-- We need the Catalina jars for Tomcat -->
<!-- * for other app servers - check the docs -->
<fileset dir="${appserver.lib}">
<include name="catalina-ant.jar"/>
</fileset>
</path>
<taskdef name="install" classname="org.apache.catalina.ant.DeployTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="list" classname="org.apache.catalina.ant.ListTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="start" classname="org.apache.catalina.ant.StartTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="stop" classname="org.apache.catalina.ant.StopTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<target name="install" description="Install application in Tomcat">
<install url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"
war="${name}"/>
</target>
<target name="reload" description="Reload application in Tomcat">
<reload url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"/>
</target>
<target name="start" description="Start Tomcat application">
<start url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"/>
</target>
<target name="stop" description="Stop Tomcat application">
<stop url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"/>
</target>
<target name="list" description="List Tomcat applications">
<list url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"/>
</target>
<!-- End Tomcat tasks -->
</project>
我的构建属性如下所示:
# Ant properties for building the springapp
appserver.home=C:/Program Files/Apache Software Foundation/Tomcat 7.0
# for Tomcat 5 use $appserver.home}/server/lib
# for Tomcat 6 use $appserver.home}/lib
appserver.lib=${appserver.home}/lib/
deploy.path=${appserver.home}/webapps
tomcat.manager.url=http://localhost:8080/manager
tomcat.manager.username=
tomcat.manager.password=
奇怪的是,如果我不扩展SimpleFormController。错误:
javax.portlet.PortletContext类型 无法解决。这是间接的 从必需的.class文件中引用
消失,但我仍然无法用完全相同的错误构建它。
我目前正在使用eclipse IDE和tomcat 7
我有必要的库来运行spring和hibernate,所以我无法弄清楚这是什么问题。
我检查了JAVA主路径,我的java安装正确。
提前致谢。
答案 0 :(得分:3)
将JAVA_HOME
设置为JDK,如c:\Program Files\Java\jdk1.6.0_20\
答案 1 :(得分:2)
您的JAVA_HOME环境变量似乎指向JRE(Java运行时环境),但您需要它指向JDK(Java Development Kit)。
答案 2 :(得分:0)
好的小更新。它现在很好,我不需要做任何事情。我刚刚打开项目并在SpringSource工具套件IDE上运行build.xml,这是另一种eclipse的风格,但是基于spring并且它有效。唯一的事情是“包”线仍然突出显示错误,但它仍然建立良好?
确实很奇怪。
答案 3 :(得分:0)
您可以尝试更新Eclipse正在使用的JDK,如下所示:
在Window-&gt; Preferences ...-&gt; Java-&gt; Installed JREs中添加和设置JRE:
JRE type: Standard VM JRE
Name: jdk1.6.0_18
JRE home directory: C:\Program Files (x86)\Java\jdk1.6.0_18
如果不是这种情况,则JAVA_HOME路径中的括号和空格可能会导致问题。尝试将JDK复制到其他位置并更新JAVA_HOME。
答案 4 :(得分:0)
尝试更改PATH环境变量。 只需将您想要的Java版本放在PATH中的Windows目录之前。
set PATH="C:\Program Files\Java\jdk1.6.0_35\bin";%PATH%
在Windows上,java可执行文件使用Windows注册表找到要运行的Java的默认版本。 通过使用PATH环境变量找到要运行的java.exe的副本。除非您采取措施进行更改,否则默认情况下会在Windows目录中找到一个副本。由于此副本不在Java运行时目录中,因此它通过查看注册表来查找该副本。 因此,您需要修改注册表,或者将您想要的Java版本放在PATH中的Windows目录之前。