我是Netbeans IDE和Java的新手.我有一个java项目,显示了很多编译错误:
can not import "org.apache.commons.logging.Log"
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这些错误吗?如何在Netbeans IDE中添加库文件?
我正在交换机器(在两台Windows 8.1笔记本电脑之间),刚刚从TFS加载了我正在处理的项目.在一台机器上它编译,另一台机器没有编译,并给出第一个错误
error C1083: Cannot open include file: 'atlbase.h': No such file or directory
Run Code Online (Sandbox Code Playgroud)
在两台笔记本电脑上,我运行的是Visual Studio Ultimate 2013.在第一台笔记本电脑上,我检查了它的位置atlbase.h,它C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include来自于Visual Studio 2012安装目录.在新机器上,我没有安装Visual Studio 2012,因此该目录C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include不存在.
其他人有类似的问题(例如Ramilol的问题),因为他们使用的是Visual Studio Express.我正在使用Ultimate.
它可能是一个环境变量问题(由raj raj建议),但我的include目录路径VC++ Directories是$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath)必需的.
我的一般问题是"我该如何解决这个问题?" 但是我也有兴趣知道我如何检查并设置$(VCInstallDir)的值,因为C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include它确实存在atlbase.h(所以我很困惑,为什么它没有被拾取).
==========编辑1:重写==========
让我再说一遍这个问题.
我已经将一个Visual Studio 2013项目加载到TFS的新构建笔记本电脑上.它不会构建并给出错误error C1083: Cannot open include file: 'atlbase.h': No such file or directory …
在我的iOS项目中,我需要使用用C++编写的外部库.C++头文件都在一个目录中.
我已经将这些C++标题添加到我的Xcode项目中,并且还指定了标题搜索路径(在Build Settings中).
问题是这些C++标头使用<>尖括号互相包含.这导致:
'filename.h' file not found with <angled> include, use "quotes" instead.
Run Code Online (Sandbox Code Playgroud)
奇怪的是,Xcode不会抱怨所有标题.同样在一个文件中包含#include'd标题也没问题,而#include在另一个文件中则是一个问题.我认为这是因为这些标题#include彼此.
谢谢!
我在EC2上有文件结构,如:但面临一些文件引用问题.
index.php
-db
-config.php
-cron
-cron1.php
Run Code Online (Sandbox Code Playgroud)
我尝试过文件引用:
`require_once (dirname(__FILE__).'/db/config.php');`
`require_once (($_SERVER['DOCUMENT_ROOT']).'/db/config.php');`
Run Code Online (Sandbox Code Playgroud)
但是cron没有run.it在邮件中给出错误
`PHP Warning: require_once(/db/config.php): failed to open stream: No such file or directory in /var/www/html/cron/cron1.php on line 3
Warning: require_once(/db/config.php): failed to open stream: No such file or directory in /var/www/html/cron/cron1.php on line 3
PHP Fatal error: require_once(): Failed opening required '/db/config.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/cron/cron1.php on line 3
Fatal error: require_once(): Failed opening required '/db/config.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/cron/cron1.php on line 3`
Run Code Online (Sandbox Code Playgroud) 我的网站上有一个名为$ basePath的变量,它被设置为:
$basePath = '/Systems/dgw/';
Run Code Online (Sandbox Code Playgroud)
我在我的所有css,js和图像标签上使用它(缩短以获得更好的可见性):
<link href="<?php echo $basePath; ?>include/assets/css/bootstrap.min.css">
Run Code Online (Sandbox Code Playgroud)
我对这些包含没有问题,它们可以在任何文件和我的文件夹中正常工作.
我有一个包含以下行的页面:
<img src="<?php echo $basePath; ?>images/new_logo.png" alt="logo"/>
Run Code Online (Sandbox Code Playgroud)
图像显示很好.之后的一行说明:
<?php include($basePath.'include/assets/common/topMessages.php');?>
Run Code Online (Sandbox Code Playgroud)
但包含不会发生.当我这样尝试时:
<?php include('../../include/assets/common/topMessages.php');?>
Run Code Online (Sandbox Code Playgroud)
有用.
任何人都知道什么可能是错的?
当我遇到一个奇怪的情况时,我正在用PHP编写一个Web应用程序.为了说明我的问题,请考虑这种结构的Web应用程序:
/
index.php
f1/
f1.php
f2/
f2.php
Run Code Online (Sandbox Code Playgroud)
这些文件的内容:
index.php文件:
<?php require_once("f1/f1.php"); ?>
Run Code Online (Sandbox Code Playgroud)
f1.php:
<?php require_once("../f2/f2.php"); ?>
Run Code Online (Sandbox Code Playgroud)
f2.php:空白
现在当我尝试在浏览器中打开index.php时出现此错误:
Warning: require_once(../f2/f2.php) [function.require-once]:
failed to open stream: No such file or directory in /var/www/reqtest/f1/f1.php on line 2
Fatal error: require_once() [function.require]:
Failed opening required '../f2/f2.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/reqtest/f1/f1.php on line 2
Run Code Online (Sandbox Code Playgroud)
有什么明显的东西我不见了吗?如何在PHP中包含路径?
在我提出这个问题之前,我试图尝试并找出答案.我设置了另一个测试,如下所示:
/
index.php
f1/
f1.php
f2.php
Run Code Online (Sandbox Code Playgroud)
index.php文件:
<?php require_once("f1/f1.php"); ?>
Run Code Online (Sandbox Code Playgroud)
f1.php:
<?php require_once("f2.php"); ?>
Run Code Online (Sandbox Code Playgroud)
f2.php:空白
令我惊讶的是(并且完全混乱),这很好!
那么,路径解析背后的秘诀是什么?
PS我看到了这个问题,但它仍然没有回答我在这里所说的第二个案例.
我想做的是将'domain1'中的'file1.php'包含在'domain2'上的'file2.php'中.所以我认为我应该做的是这样的:
file2.php
require_once '/var/www/vhosts/domain1/httpdocs/file1.php';
Run Code Online (Sandbox Code Playgroud)
但这不能用于我无法真正掌握的原因.所以我做的是将我的路径添加到包含路径.就像是:
file2.php
set_include_path(get_include_path() . PATH_SEPARATOR . "/var/www/vhosts/domain1/httpdocs");
require_once 'file1.php';
Run Code Online (Sandbox Code Playgroud)
那么请你给我一些提示,说明我做错了什么?
谢谢
更新 - 无论哪种方式,我收到以下错误消息:
Fatal error: require() [function.require]: Failed opening required '/var/www/vhosts/domain1/httpdocs/file1.php' (include_path='.:/php/includes:/usr/share/pear/') in /var/www/vhosts/domain2/httpdocs/file2.php on line 4
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用safe_mode On和Off.
UPDATE2:我还在我的测试文件上将权限更改为777,并且我已经在bash中仔细检查了包含文件的路径.
解决方案:我设法解开了这个谜!我的托管公司使用Plesk来管理域名等.php.ini中的错误报告级别也不是E_ALL.当我向E_ALL设置错误报告时,我收到一条警告:
Warning: require() [function.require]: open_basedir restriction in effect.
Run Code Online (Sandbox Code Playgroud)
所以我进入/var/www/vhosts/domain2/conf/httpd.include并编辑了open_basedir路径.请注意,这不是一个持久的解决方案,因为每次更改域配置时,此配置文件都会被plesk重写.您应该做的是在同一目录中编辑(或创建)'vhost.conf'文件,然后运行:
/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=DOMAIN.TLD
Run Code Online (Sandbox Code Playgroud)
这应该重新配置您的域的设置,但由于一些奇怪的原因,它不适用于open_basedir.我可以修改其他东西,比如document_root,但它不会改变open_basedir,但这是另一个问题:D
解决方案最终:对于那些有同样问题的人来说,最终的代码是有效的.我刚刚在/var/www/vhosts/domain2/conf/vhost.conf中添加了这个(您可以将'/ var/www/vhosts'更改为'/'或任何您喜欢的内容):
<Directory /var/www/vhosts/DOMAIN.TLD/httpdocs>
<IfModule mod_php5.c>
php_admin_flag engine on
php_admin_flag safe_mode off
php_admin_value open_basedir "/var/www/vhosts"
</IfModule>
Options -Includes -ExecCGI
</Directory>
Run Code Online (Sandbox Code Playgroud)
谢谢大家!
从其他包含目录中包含另一个文件夹中具有相同名称的文件的最佳方法是什么?
例:
lib1/include/foo.h
lib2/include/foo.hRun Code Online (Sandbox Code Playgroud)
其中lib1/include和lib2/include都添加到其他include目录中.
编辑:
这些库来自不同的SDK,每个开发人员都在自己的位置安装它们.唯一可以确定的是两个文件夹都在IDE的附加包含路径中
方法1:
#include "../../lib1/include/foo.h
方法2:
在lib2/include之前添加lib1/include在搜索路径中,因为它们按顺序搜索:
#include "foo.h"
将包含lib1/include/foo.h
gcc提供了一个-I-选项,在其-I前面的目录-I-中搜索引用的includes(#include "foo.h"),并-I在-I-其后面的目录中搜索括号include(#include <foo.h>),以及其他引用的目录包括.
-I-有另一个非常重要的影响.它#include从默认搜索路径中删除所在源文件的目录.通常,带引号的include总是搜索源文件的目录,并在任何-I或其他目录之前搜索它. -I-因此,您可以通过删除原则上优先使用的默认路径来指定所需顺序的引用包含文件的确切位置.
所以听起来我回答了我的问题,是吗?不,当我-I-现在使用时,我得到了这个讨厌的图:
cc1: note: obsolete option -I- used, please use -iquote instead
Run Code Online (Sandbox Code Playgroud)
问题是,-iquote它不会从搜索路径删除当前目录.无论我提供什么,它仍然总是先搜索-iquote.
所以问题是:如何在-I-不使用的情况下获得相同的效果-I-,哪些已被弃用并最终消失?
阐述:
假设文件布局如下:
srcdir/
configure
file1.c
file2.c
config.h
builddir/
Makefile
file1.o
file2.o
config.h
libpudding.a
Run Code Online (Sandbox Code Playgroud)
由于各种原因,我们无法config.h从中删除srcdir(它将影响其他平台上的构建过程).但是,我们希望将config.hfrom builddir优先包括在in zconf.h中srcdir. …
我对C++和Eclipse一般都很陌生,所以如果我遗漏了一些相当明显的东西,我会道歉.
我遇到的问题是我试图在我的一个源文件中包含一个头文件,但它们位于我的项目目录中的不同文件夹中.我不知道应该如何包括它们.我上传了一张图片,显示我想要包含突出显示的头文件的问题.

如果有人能告诉我'#include'声明我应该使用它们那将是非常棒的.
谢谢!
include-path ×10
include ×5
c++ ×4
php ×4
apache2 ×1
atl ×1
c ×1
cron ×1
eclipse ×1
gcc ×1
header ×1
ios ×1
java ×1
netbeans-6.9 ×1
objective-c ×1
path ×1
require-once ×1
xcode ×1