Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Intellij IDEA会忽略我的tomcat/conf/server.xml上下文标记?_Java_Tomcat_Intellij Idea - Fatal编程技术网

Java 为什么Intellij IDEA会忽略我的tomcat/conf/server.xml上下文标记?

Java 为什么Intellij IDEA会忽略我的tomcat/conf/server.xml上下文标记?,java,tomcat,intellij-idea,Java,Tomcat,Intellij Idea,在我的$TOMCAT_HOME/conf/server.xml中,我将其放在底部附近: ... <Context path="/staticdir" docBase="/filesystem/path/to/static/dir"/> </Host> </Engine> </Service> </Server> 。。。 我这样做是因为我的文

在我的$TOMCAT_HOME/conf/server.xml中,我将其放在底部附近:

...

 <Context path="/staticdir" docBase="/filesystem/path/to/static/dir"/>                                

      </Host>
    </Engine>
  </Service>
</Server>
。。。
我这样做是因为我的文件系统中有文件,当您转到localhost:8080/staticdir时,我希望tomcat提供这些文件

但当我在Intellij IDEA中启动应用程序时,tomcat日志会这样说:

使用CATALINA_库:“C:\Users\me.IntelliJIdea11\system\tomcat\Unnamed_Product_2”

如果我进入文件系统上的那个目录并查看conf/server.xml文件,它没有我放在那里的
Context
标记。intellij为什么要修改它?我如何防止它

我觉得我应该改为对$TOMCAT_HOME/conf/context.xml文件进行此更改,但我很难找到如何在其中进行此更改的示例。如果有人可以向我展示一个例子,我会认为这是一个答案,因为我注意到因特利利不修改那个文件。
我找到了一个解决办法

但我真的不喜欢这样,因为当新用户第一次尝试运行应用程序时,我无法想象有什么方法可以检测出他们错误地执行了这一步

下面是我的tomcat配置的图片:


默认情况下,IntelliJ IDEA修改了
CATALINA_BASE
环境,以便Tomcat使用调整后的配置文件直接从工件输出位置部署应用程序,但是可以手动执行和配置所有操作(通过将工件输出更改为进入
webapps
,或者以IDEA相同的方式更改服务器配置,以便从标准工件输出进行部署)。

我需要Tomcat/IntelliJ中的根上下文,因此在Host标记中的server.xml中,添加特定上下文:

<Context path="" docBase="C:\intranet\app\tomcat\webapps\ROOT\" reloadable="true" />
现在我可以访问根域中的资源,例如crossdomain.xml:

http://localhost:8080/crossdomain.xml

我复制了服务器,发现我的日志文件存储在错误的位置

所以对于“Tomcat产品”,它实际上使用了
catalina.base=“…/prepod/…”


我最后编辑了
projects/.idea/workspace.xml
,它就在我在启动/连接选项卡中安装IntelliJ的旁边,添加数据,如下面“传递环境变量”部分所述。重新启动,就这样了

Name           Value
------------   -----
CATLINA_BASE   {Tomcat Installation directory}

我看不出你们的方法有太大的不同。在第一种情况下,你们的新用户必须有Tomcat的特殊配置,他有他需要的信息。在第二种情况下,他必须有IntelliJ的特殊配置的信息。在这两种情况下,如果他不这样做,他会收到相同的错误消息。我会将静态内容放在里面如果你不需要重复使用它,你的webapp。静态内容是在应用程序运行时生成的。我想它不是静态的,它是“静态的”。此外,我设置了它,以便有一个指向server.xml的属性文件。如果缺少该属性或prop文件,它会给出一个很好的错误,说明它们需要存在。一旦它存在,它会扫描指向它的server.xml,以确保设置正确。Intellij会弄乱它,因为它不使用server.xml。我怎么能让应用程序出错来解释如何设置它呢?我的意思是,“Intellij正在搞乱它,因为它使用自己的server.xml,并且配置它与非Intellij设置不同。”您可以选择在运行配置中覆盖
CATALINA\u BASE
,并使用默认配置,您应该将其配置为使用部署源的工件输出位置,或者将工件输出更改为进入
TOMCAT\u HOME\webapps
目录。有关
CATALINA\u BASE
覆盖,请参阅和中的我的答案.非常感谢你的提示!这正是我需要的。我选择了“覆盖”接近并将我的CATALINA_基设置为我需要的位置。使用自定义CATALINA_基而不是Intellij在未指定时使用的默认CATALINA_基是否有任何副作用?因此,您的CATALINA_基值与CATALINA_基值相同?CATALINA_基和CATALINA_基不应该是两种不同的东西吗?我认为BASE有一些暂时的影响y您可能不想保存的更改
Name           Value
------------   -----
CATLINA_BASE   {Tomcat Installation directory}